管道Ipython魔术输出到变量?

时间:2013-12-20 12:53:45

标签: python python-2.7 ipython ipython-notebook ipython-magic

我想在我的ipython Notebook中运行一个bash脚本,并将输出保存为python变量中的字符串,以便进一步操作。基本上我想将bash魔法的输出传递给变量, 例如,输出如下:

%%bash
some_command [options] foo bar

3 个答案:

答案 0 :(得分:32)

如何使用它:

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

而不是%%bash魔法?使用!符号将以下命令作为shell命令运行,结果全部存储在myvar中。要运行多个命令并收集所有命令的输出,只需将快速shell脚本放在一起。

答案 1 :(得分:16)

为了完整性,如果您仍想使用%%bash单元格法术,则可以传递--out--err标志以将输出从stdout和stderr重定向到变量你的选择。

来自doucumentation

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

会将输出存储在变量outputerror中,以便:

print(error)
print(output)

将打印到python控制台:

hello, stderr
hi, stdout

答案 2 :(得分:3)

注意@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