获取python子进程的输出

时间:2011-06-05 21:43:45

标签: python subprocess

我正在尝试捕获输出。如果,在python提示符下,我运行

p = subprocess.Popen(["/path/to/search_by_hash.par", hash_str], 
                      stdout=subprocess.PIPE)

返回值(列表)打印到stdout,但未捕获

[4460475, 4406612, 4379510]

我尝试用

跟进
value = p.communicate()[0]
value

..但是值是一个空字符串,而不是我期望的整数列表,并且正在打印到stdout

我尝试了Store output of subprocess.Popen call in a string的解决方案但未能捕获输出。

更新:

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

谢谢!

3 个答案:

答案 0 :(得分:5)

尝试使用stderr检查p.communicate()[1]

答案 1 :(得分:3)

因为接受的答案没有解决问题(至少对我而言):

要捕获if let navigationController = self.navigationController { navigationController.popViewControllerAnimated(false) navigationController.pushViewController(self, animated: false) } - 输出,应执行以下操作:

UIBarButtonItem

关键部分是参数if (strpos($brss[**$i**],$usera)!==false) { echo "true"; } else { echo "false"; } ,如果没有此参数,stderr - 输出将不会被捕获,import subprocess p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) output, err = p.communicate() 将是stderr=subprocess.PIPE

如果您只对stderr - 输出感兴趣,实际上可以使用:

err

在这种情况下,Nonestderr

答案 2 :(得分:1)

沟通是一种方法。所以你应该打电话给它!

out = p.communicate()