如何获取subprocess.call的stdout和stderr?

时间:2013-05-04 18:47:51

标签: python

我正在使用subprocess.call,我需要获取stdout和stderr的输出。我怎么能这样做?

注意check_output()

  

注意不要在此函数中使用stdout = PIPE或stderr = PIPE。   由于在当前进程中未读取管道,子进程可能会阻塞   如果它为管道生成足够的输出以填充OS管道缓冲区。

我的调用可能产生大量输出,那么获得输出的安全方法是什么?

2 个答案:

答案 0 :(得分:1)

这样的事情会起作用:

f = file('output.txt','w')
g = file('err.txt','w')

p = subprocess.Popen(cmd, shell=True, stdout=f, stderr=g)

f.close()
g.close()

答案 1 :(得分:0)

创建一个为编写而打开的文件对象,并将其作为sdtoutstderr传递。