IPython笔记本中的Stdout与CLI IPython相比

时间:2014-12-29 02:37:25

标签: python ipython ipython-notebook

从笔记本单元格运行时,不显示命令结果。

来自IPython笔记本:

os.system("pwd")
0< - 没有错误

从CLI调用的IPython:

In [15]: os.system("pwd")
/Users/joe
Out[15]: 0< - 没有错误

我希望在从笔记本单元格运行命令时显示/Users/joe。 有什么遗漏?

谢谢你, 我

2 个答案:

答案 0 :(得分:3)

这解释为here

  

当你执行os.system时,它没有从新的捕获stdout / stderr   处理。在终端,这是有效的,因为stdout和stderr只是   直接进入终端,没有Python知道它们。   在笔记本中,它没有,因为内核只能转发   它知道的stdout / stderr。

问题的解决方案是使用subprocess

>>> import subprocess
>>> subprocess.check_output(["pwd"])
/Users/joe

答案 1 :(得分:3)

IPython(Notebook)有一个解决方案:

In [1]: %pwd

'/Users/xxx/tmp'

您也可以调用任何shell命令:

In [2]: !pwd

'/Users/xxx/tmp'

在笔记本中,您还可以使用bash命令运行整个单元格:

In [3]: %%bash
        pwd 
        ls

'/Users/xxx/tmp'
file1.txt
file2.txt