[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 这是我写的剧本:[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
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)