将 Ipython 魔术输出管道到变量



我想在我的 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

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

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

最新更新