我正在尝试获取bash命令的标准输出作为Python中的字符串。根据Popen文档,我尝试过:
import subprocess
p = subprocess.Popen(["echo", "hello"])
stdoutdata, stderrdata = p.communicate()
print stdoutdata
Run Code Online (Sandbox Code Playgroud)
运行此脚本将产生以下输出:
import subprocess
p = subprocess.Popen(["echo", "hello"])
stdoutdata, stderrdata = p.communicate()
print stdoutdata
Run Code Online (Sandbox Code Playgroud)
因此,尽管输出已通过Python打印,但stdoutdata变量为None,而不是"hello"我想要的。我该怎么做?
您没有向Popen构造函数提供任何stdout,默认功能只是将输出写入父对象的stdout句柄。因此,您会看到它被打印在外壳中。
引用Popen的文档:
使用默认设置时
None,将不会发生重定向。子级的文件句柄将从父级继承。
要在生成的元组中填充标准输出,请subprocess.PIPE用作标准输出。
引用文档:
要获得
None结果元组以外的任何内容,您也需要给出stdout=PIPE和/或stderr=PIPE。
>>> import subprocess
>>> p = subprocess.Popen(["echo", "hello"], stdout=subprocess.PIPE)
>>> p.communicate()
('hello\n', None)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9738 次 |
| 最近记录: |