2015-06-26 39 views
0

我已经看到了围绕这个话题的几个问题,但都没有为我工作。我需要的是得到完整输出和错误一subprocess.Popen([...],stdout=subprocess.PIPE)的保持,这一切在一次写入文件,例如:如何读取标准输出和标准错误并使用子进程Popen一次全部保存?

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() 

在这个例子中,我只得到标准的第一线输出,没有别的。

回答

2

要一个子进程的标准输出和标准错误保存到一个文件:

import subprocess 

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