2010-12-01 46 views
0

我使用的子模塊,POPEN類輸出了一些成果,如:[Python的]如何轉換/從子進程的輸出記錄到文件

063.245.209.093.00080-128.192.076.180.01039:HTTP/1.1 302找到 063.245.209.093.00080-128.192.076.180.01040:HTTP/1.1 302找到

,這裏是我寫的劇本:

import subprocess, shlex, fileinput,filecmp 
proc = subprocess.Popen('egrep \'^HTTP/\' *', shell=True,  stdin=subprocess.PIPE, stdout=subprocess.PIPE,) 
stdout_value = proc.communicate()[0] 
print 'results:' 
print stdout_value 

我的問題是:如何轉換/記錄stdout導致文件結果?

我感謝你的迴應和幫助!

+0

你問如何寫stdout_value到文件?或者如何將文件傳遞到`stdin =`?我建議你做前 – Falmarri 2010-12-01 01:07:40

回答

1
import subprocess 
import glob 

def egrep(pattern, *files): 
    """ runs egrep on the files and returns the entire result as a string """ 
    cmd = ['egrep', pattern] 
    for filespec in files: 
     cmd.extend(glob.glob(filespec)) 
    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE) 
    return proc.communicate()[0] 

results = egrep(r'^HTTP/', '*') 
print 'results:' 
print results 

# write to file 
with open('result_file.txt', 'w') as f: 
    f.write(results) 
0

一個或任意的stdinstdout,和stderr參數subprocess.Popen()可以file對象(或一個文件描述符),這將導致程序讀取或寫入給定的文件。

相關問題