2010-12-01 4 views
0

ich Subprozess Modul verwende, die Popen Klasse Ausgabe einige Ergebnisse wie:[Python] Wie konvertiert/notieren Sie die Ausgabe von subprocess in eine Datei

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

und hier ist das Skript schrieb ich:

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 

Meine Frage ist: wie zu konvertieren/notieren die ergibt sich aus stdout in eine Datei?

Ich schätze all Ihre Antworten und hilft!

+0

Fragen Sie, wie man stdout_value in eine Datei schreibt? Oder wie man eine Datei in 'stdin =' übergibt? Ich würde vorschlagen, Sie tun das ehemalige – Falmarri

+0

Öffnen Sie eine Datei und drucken Sie hinein? Ich bin mir nicht sicher, ob du das willst, aber du kannst es versuchen: f = open ('log.txt', 'w'); Drucken >> f, stdout_value – Kabie

Antwort

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

Einer oder alle der stdin, stdout und stderr Argumente subprocess.Popen() können file Objekte (oder ein Dateideskriptor) sein, die das Programm bewirkt, dass lesen oder zu den angegebenen Dateien schreiben.

Verwandte Themen