[Python]如何将子流程的输出转换/记录为文件

[Python]如何将子流程的输出转换/记录为文件,python,Python,我使用的是subprocess模块,Popen类输出如下结果: 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/\' *', s

我使用的是subprocess模块,Popen类输出如下结果:

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
我的问题是:如何将标准输出的结果转换/记录到文件中


我感谢你的回应和帮助

subprocess.Popen()的
stdin
stdout
stderr
参数中的一个或任意一个可以是
文件
对象(或文件描述符),这将导致程序读取或写入给定文件。

是否询问如何将stdout\u值写入文件?或者如何将文件传递到
stdin=
?我建议你做前一件事打开一个文件并打印进去?我不确定这是您想要的,但您可以尝试:f=open('log.txt','w');打印>>f,标准输出值
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)