Ho uno script python che chiama un eseguibile. L'output dell'eseguibile viene reindirizzato a un file di registro insieme ad alcune informazioni sull'ora in cui è stato chiamato. Ad esempio, utilizzando python -V
come l'eseguibile per illustrare:Perché lo sottoprocesso stdout in un file è stato scritto fuori servizio?
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)
L'output del file LOGFILE.txt
è:
Python 2.7.3
******
Events on 2013-04-10 19:27:25 :
Dove mi aspettavo come segue:
******
Events on 2013-04-10 19:27:25 :
Python 2.7.3
ho scritto il ******
e le informazioni sull'ora nel file di registro aperto prima di eseguire il sottoprocesso e reindirizzarne l'output e l'errore nel file. Perché ordinare in questo modo? e come posso riordinare?
Provare F.flush(), prima di eseguire il sottoprocesso. – gcbirzan
Ha funzionato! Puoi postarlo come risposta con una piccola spiegazione? – amyassin