我想在我的ipython Notebook中运行一个bash脚本,并将输出保存为python变量中的字符串,以便进一步操作。基本上我想将bash魔法的输出传递给变量, 例如,输出如下:
%%bash
some_command [options] foo bar
答案 0 :(得分:32)
如何使用它:
myvar = !some_command --option1 --option2 foo bar
而不是%%bash
魔法?使用!
符号将以下命令作为shell命令运行,结果全部存储在myvar
中。要运行多个命令并收集所有命令的输出,只需将快速shell脚本放在一起。
答案 1 :(得分:16)
为了完整性,如果您仍想使用%%bash
单元格法术,则可以传递--out
和--err
标志以将输出从stdout和stderr重定向到变量你的选择。
%%bash --out output --err error
echo "hi, stdout"
echo "hello, stderr" >&2
会将输出存储在变量output
和error
中,以便:
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