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)