Python 如何读取stdout和stderr并使用subprocess Popen同时保存它们?

Python 如何读取stdout和stderr并使用subprocess Popen同时保存它们?,python,subprocess,Python,Subprocess,我已经看到了一些关于这个话题的问题,但没有一个对我有用。我需要的是掌握subprocess.Popen([…],stdout=subprocess.PIPE)的完整stdout和stderr,并将其一次性写入文件,例如: import tempfile import subprocess stattmpfile = tempfile.NamedTemporaryFile(suffix=".log",prefix="status",delete=False) proc = subprocess.

我已经看到了一些关于这个话题的问题,但没有一个对我有用。我需要的是掌握
subprocess.Popen([…],stdout=subprocess.PIPE)
的完整stdout和stderr,并将其一次性写入文件,例如:

import tempfile
import subprocess

stattmpfile = tempfile.NamedTemporaryFile(suffix=".log",prefix="status",delete=False)
proc = subprocess.Popen([mycommand, myparams], stdout=subprocess.PIPE)
while proc.poll() is None:
    output = proc.stdout.readline()
    statusfile.write(output)
output = proc.communicate()[0]
statusfile.write(output)
statusfile.close()

在本例中,我只获取标准输出的第一行,没有其他内容。

要将子流程的stdout和stderr都保存到文件中,请执行以下操作:

import subprocess

with open('filename', 'wb', 0) as file:
    subprocess.check_call(cmd, stdout=file, stderr=subprocess.STDOUT)