我想在这里捕获输出.如果,在python提示符下,我运行
p = subprocess.Popen(["/path/to/search_by_hash.par", hash_str],
stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)
返回值(列表)打印到stdout,但未捕获
[4460475, 4406612, 4379510]
Run Code Online (Sandbox Code Playgroud)
我试过跟进它
value = p.communicate()[0]
value
Run Code Online (Sandbox Code Playgroud)
..but值是一个空字符串,而不是我期望的整数列表,并且正在打印到stdout
我试验了子进程的Store输出的解决方案.Popen调用字符串但是无法捕获输出.
更新:
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
Run Code Online (Sandbox Code Playgroud)
谢谢!
因为接受的答案不能解决问题(至少对我而言):
要捕获stderr-output,应执行以下操作:
import subprocess
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = p.communicate()
Run Code Online (Sandbox Code Playgroud)
最关键的部分是参数stderr=subprocess.PIPE,如果没有这个参数stderr-输出不会被捕获,并err会None。
如果您只对stderr-output感兴趣,您实际上可以使用:
p = subprocess.Popen(command, stderr=subprocess.PIPE)
err = p.communicate()[1]
Run Code Online (Sandbox Code Playgroud)
在这种情况下p.communicate()[0]是None。
| 归档时间: |
|
| 查看次数: |
13830 次 |
| 最近记录: |