我想在我的 ipython Notebook 中运行一个 bash 脚本,并将输出作为字符串保存在 python 变量中以供进一步操作。基本上我想将 bash 魔法的输出通过管道传递给一个变量,例如这样的输出:
%%bash
some_command [options] foo bar
我想在我的 ipython Notebook 中运行一个 bash 脚本,并将输出作为字符串保存在 python 变量中以供进一步操作。基本上我想将 bash 魔法的输出通过管道传递给一个变量,例如这样的输出:
%%bash
some_command [options] foo bar
如何使用这个:
myvar = !some_command --option1 --option2 foo bar
而不是%%bash
魔法?使用该!
符号将以下命令作为 shell 命令运行,结果全部存储在myvar
. 要运行多个命令并收集所有命令的输出,只需编写一个快速的 shell 脚本。
为了完整起见,如果您仍想使用%%bash
单元魔法,您可以传递--out
and--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
SList
请注意 @MattDMo ( ) 和 @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