[英]Getting the output of a python subprocess
我试图在这里捕获 output。 如果在 python 提示符下,我运行
p = subprocess.Popen(["/path/to/search_by_hash.par", hash_str],
stdout=subprocess.PIPE)
返回值(列表)打印到标准输出,但未被捕获
[4460475, 4406612, 4379510]
我试过跟进
value = p.communicate()[0]
value
..但是值是一个空字符串,而不是我期望的整数列表,并且正在打印到标准输出
我尝试了来自Store output 的解决方案。在字符串中调用 Popen,但无法捕获 output。
更新:
stderr 似乎也没有产生任何东西......我正在寻找的列表正在打印出来......只是没有任何运气来捕捉它。 见下文:
>>> p = subprocess.Popen(["/home/jfry/tools/search_by_hash.par", hash_str],
stdout=subprocess.PIPE)
>>>
[4460475, 4406612, 4379510]
value, err = p.communicate()
>>> value
''
>>> err
谢谢!
尝试使用p.communicate()[1]
检查stderr
。
因为接受的答案并不能解决问题(至少对我而言):
要捕获stderr
-输出,应执行以下操作:
import subprocess
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = p.communicate()
关键部分是参数stderr=subprocess.PIPE
,没有这个参数, stderr
-output 将不会被捕获并且err
将为None
。
如果您只对stderr
-输出感兴趣,您实际上可以使用:
p = subprocess.Popen(command, stderr=subprocess.PIPE)
err = p.communicate()[1]
在这种情况下p.communicate()[0]
是None
。
沟通是一种方法。 所以你应该打电话!
out = p.communicate()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.