开发者

[Python]How to convert/record the output from subprocess into a file

I am using subprocess module, which Popen class output some results like:

063.245.209.093.00080-128.192.076.180.01039:HTTP/1.1 302 Found 063.245.209.093.00080-128.192.076.180.01040:HTTP/1.1 302 Found

and here is the script I wrote:

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

My question is: how to convert/record the results from stdout into a file?

I appreciate all your responses and开发者_运维问答 helps!


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)


One or any of the stdin, stdout, and stderr arguments to subprocess.Popen() can be file objects (or a file descriptor), which will cause the program to read from or write to the given files.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜