10

私はpythonとIpythonの初心者です。これは些細な質問かもしれません。おそらく他の質問と重複しています。しかし、どのキーワードを検索すればよいかわかりません。

シェルと対話する方法はすでに知っています。

例えば:

In [1]: a = !ls
In [2]: a
        ...same ls result as shell...
In [3]: type(a)
Out[3]: IPython.utils.text.SList

ただし、Ipython マジックと対話するにはどうすればよいですか?

例えば

In [1]: a = %history -t 
        ...Ipython result...
In [2]: a
In [3]: type(a)
Out[3]: NoneType
4

5 に答える 5

3

history コマンドの場合、具体的には、最も簡単な解決策は次のとおりです。

In [243]: history -t -f history.txt
In [244]: with open('history.txt') as f:
   .....:     HIST = [l.strip() for l in f]
   .....:     

In [245]: len(HIST)
Out[245]: 258

In [246]: HIST[-1]
Out[246]: "get_ipython().magic(u'history -t -f history.txt')"

In [247]: 

基本的には、ファイルにダンプして読み戻します。

これは大雑把に思えるかもしれませんが、IPython の性質によるものだと思います。これは実際にはインタープリターではなく、基礎となるインタープリターのコマンド ライン シェルです。私の疑いでは、魔法のコマンドは IPython 内で処理され、コマンドをインタープリターに渡し、出力をキャプチャし、コマンド履歴に Out[n] として保存するという通常のパスを通過しません。そのため、リコールと割り当てには使用できません。

別の方法は、get_ipython().magic単純に を返すことNoneです。

いずれにせよ、画面出力 d=for%historyは利用できません。ファイルにダンプする必要があります。

魔法のコマンドごとに異なるようです。alias、たとえば、画面出力を返します

In [288]: a=%alias
Total number of aliases: 17

In [289]: a
Out[289]: 
[('cat', 'cat'),
 ('clear', 'clear'),
 ('cp', 'cp'),
 ('ldir', 'ls -F -G -l %l | grep /$'),
 ('less', 'less'),
 ('lf', 'ls -F -l -G %l | grep ^-'),
 ('lk', 'ls -F -l -G %l | grep ^l'),
 ('ll', 'ls -F -l -G'),
 ('ls', 'ls -F -G'),
 ('lx', 'ls -F -l -G %l | grep ^-..x'),
 ('man', 'man'),
 ('mkdir', 'mkdir'),
 ('more', 'more'),
 ('mv', 'mv'),
 ('rm', 'rm'),
 ('rmdir', 'rmdir'),
 (u'show', u'echo')]

In [290]: 
于 2015-05-05T17:41:11.047 に答える