6

ipython インタープリター内でファイルを実行しようとしています。ドキュメントは、この音をipython file.pyシェルや%run file.pyインタープリター自体と同じくらいシンプルにします。ただし、ipython「システムシェル」へのコマンドを含むファイルを読みたいです。次に例を示します。

files= !ls
print files

このタイプのコマンドの場合、上記のようにインタープリターを呼び出すと、 によって実行されたかのように、SyntaxError が発生し/usr/bin/pythonます。

ipythonシェルインタープリター内で実行されているかのように、システムシェルからファイルを実行することは可能ですか?

4

3 に答える 3

5

ファイルに .ipy 拡張子を付けると、これができるようです。

sam@blackbird-debian:~
$ cat tmp.ipy
me = !whoami
print me
sam@blackbird-debian:~
$ ipython tmp.ipy
['sam']
于 2012-11-14T00:46:00.093 に答える
4

すでに実行中の IPython セッションからこれを行いたいと思います。おそらくもっと単純なものがあるでしょうが、今私が考えることができるのは次のとおりです。

get_ipython().shell.run_cell(open('path/to/commands').read())

別のクレイジーなアイデア - IPython を として開始しEDITOR=cat ipythonます。次のコマンドを使用して、ファイルからコマンドをロードできます。

%edit -r path/to/commands

ただし、ユースケースにはおそらく本当の魔法があるはずです。


または、同じことを非対話的に行うこともできます (追加-iして対話モードにドロップします)。

ipython -c 'get_ipython().shell.run_cell(open("path/to/commands").read())'
于 2012-11-14T00:08:37.610 に答える
0

正確に何をしたいかによっては、実行するだけで十分な場合があります

ipython < file

バッシュから。つまり、標準入力をファイルから ipython にリダイレクトするだけで、取得しているコマンドがキーボードからのものであると ipython が認識できるようになります。

于 2012-11-14T00:05:15.447 に答える