Speichern stdout aus Teilprozess.Popen auf Datei und schreiben mehr Dinge auf die Datei

Ich Schreibe ein python-Skript, dass verwendet Teilprozess.Popen ausführen von zwei Programmen (aus der kompilierte C-code), die jeder produzieren stdout. Das script bekommt, dass die Ausgabe und speichert Sie in einer Datei. Weil die Ausgabe ist manchmal groß genug, um zu überwältigen Teilprozess.ROHR, wodurch das Skript zu hängen, ich schicke die Standardausgabe direkt in die log-Datei. Ich möchte mein Skript etwas schreiben zu Beginn und am Ende der Datei, und zwischen den beiden Teilprozess.Popen Anrufe. Allerdings, wenn ich mir meine log-Datei, alles, was ich schrieb, um die log-Datei aus dem script alle zusammen am Anfang der Datei, gefolgt von allen ausführbaren Datei stdout. Wie kann ich interleave meine hinzugefügten text in der Datei?

def run(cmd, logfile):
    p = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=logfile)
    return p

def runTest(path, flags, name):
    log = open(name, "w")
    print >> log, "Calling executable A"
    a_ret = run(path + "executable_a_name" + flags, log)
    print >> log, "Calling executable B"
    b_ret = run(path + "executable_b_name" + flags, log)
    print >> log, "More stuff"
    log.close()

Die log-Datei hat:
Aufruf von ausführbaren Ein
Aufruf von ausführbaren B
Mehr Zeug
[... stdout aus beiden executables ...]

Gibt es eine Möglichkeit kann ich Ein flush stdout, um das Protokoll nach dem Aufruf von Popen, zum Beispiel? Eine weitere Sache, die relevant sein könnten: Executable A beginnt dann pends auf B und nach B Zeug druckt und abgeschlossen ist, Ein und gibt dann mehr Material und Oberflächen.

Ich bin mit Python 2.4 auf RHE Linux.

InformationsquelleAutor der Frage jasper77 | 2010-07-06

Schreibe einen Kommentar