2015-06-26 63 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) 
相關問題