我正在使用subprocess.call
,我需要获取stdout和stderr的输出。我怎么能这样做?
注意不要在此函数中使用stdout = PIPE或stderr = PIPE。 由于在当前进程中未读取管道,子进程可能会阻塞 如果它为管道生成足够的输出以填充OS管道缓冲区。
我的调用可能产生大量输出,那么获得输出的安全方法是什么?
答案 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)
创建一个为编写而打开的文件对象,并将其作为sdtout
和stderr
传递。