我想在我的 ipython 笔记本中运行一个 bash 脚本,并将输出作为字符串保存在 python 变量中以供进一步操作。基本上我想将 bash 魔法的输出通过管道传输到一个变量,例如,输出如下内容:
%%bash
some_command [options] foo bar
使用这个怎么样:
myvar = !some_command --option1 --option2 foo bar
而不是%%bash
魔法?使用 !
符号将以下命令作为 shell 命令运行,结果都存储在 myvar
中。要运行多个命令并收集所有命令的输出,只需将快速 shell 脚本放在一起即可。
为了完整起见,如果您仍想使用 %%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
请注意@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