从笔记本单元格运行时,不显示命令结果。
来自IPython笔记本:
os.system("pwd")
0
< - 没有错误
从CLI调用的IPython:
In [15]: os.system("pwd")
/Users/joe
Out[15]: 0
< - 没有错误
我希望在从笔记本单元格运行命令时显示/Users/joe
。
有什么遗漏?
谢谢你, 我
答案 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