Ich habe ein Python-Skript, das eine ausführbare Datei aufruft. Die Ausgabe der ausführbaren Datei wird zusammen mit einigen Informationen über den Zeitpunkt des Aufrufs in eine Protokolldatei umgeleitet. Zum Beispiel mit python -V
als ausführbare Datei zu veranschaulichen:Warum wird die Subprozedur von stdout in eine Datei nicht in der richtigen Reihenfolge geschrieben?
import time, subprocess
with open('./LOGFILE.txt', 'a') as F:
F.write('******\n')
F.write('Events on %s :\n'%time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
EXE_output = subprocess.call(['python', '-V'], stdout=F, stderr=F)
Die Ausgabe der Datei LOGFILE.txt
ist:
Python 2.7.3
******
Events on 2013-04-10 19:27:25 :
Wo ich es erwartet wie folgt:
******
Events on 2013-04-10 19:27:25 :
Python 2.7.3
schrieb ich die ******
und Zeitinfo in der geöffneten Protokolldatei vor dem Ausführen des Unterprozesses und Weiterleiten seiner Ausgabe und Fehler in die Datei. Warum bestellt man so? und wie kann ich nachbestellen?
Versuchen Sie F.flush(), bevor Sie den Subprozess ausführen. – gcbirzan
Arbeitete! Kannst du es als Antwort mit einer kleinen Erklärung veröffentlichen? – amyassin