web-dev-qa-db-ja.com

Ipythonの魔法の出力を変数にパイプしますか?

Ipython Notebookでbashスクリプトを実行し、出力を文字列としてpython変数に保存して、さらに操作できるようにします。基本的に、bashマジックの出力を変数にパイプします。たとえば、次のような出力です。

%%bash
some_command [options] foo bar
25
Gioelelm

これを使用するのはどうですか?

myvar = !some_command --option1 --option2 foo bar

%%bash魔法の代わりに? !シンボルを使用すると、次のコマンドがシェルコマンドとして実行され、結果はすべてmyvarに保存されます。複数のコマンドを実行し、それらすべての出力を収集するには、簡単なシェルスクリプトをまとめるだけです。

37
MattDMo

完全を期すために、%%bashセルマジックを引き続き使用する場合は、--outフラグと--errフラグを渡して、出力をstdoutおよびstderrから選択した変数にリダイレクトできます。 。

doucumentation から:

%%bash --out output --err error
echo "hi, stdout"
echo "hello, stderr" >&2

出力を変数outputおよびerrorに格納して、次のようにします。

print(error)
print(output)

pythonコンソールに出力します:

hello, stderr
hi, stdout
17
oLas

@MattDMo(SList)と@oLas(str)の回答の変数タイプの違いに注意してください。

In [1]: output = !whoami

In [2]: type(output)
Out[2]: IPython.utils.text.SList

In [3]: %%bash --out output
   ...: whoami

In [4]: type(output)
Out[4]: str
4
Aziz Alto