Mam skrypt Pythona, który wywołuje plik wykonywalny. Wyjście pliku wykonywalnego jest przekierowywane do pliku dziennika wraz z informacjami o czasie jego wywołania. Na przykład za pomocą python -V
jako plik wykonywalny, aby zilustrować:Dlaczego podprocesować standardowe wyjście do pliku jest zapisane w kolejności?
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)
Wyjście pliku LOGFILE.txt
jest:
Python 2.7.3
******
Events on 2013-04-10 19:27:25 :
Gdzie Spodziewałem się go w następujący sposób:
******
Events on 2013-04-10 19:27:25 :
Python 2.7.3
Pisałem ******
i informacje o czasie w otwartym pliku dziennika przed uruchomieniem podprocesu i przekierowaniem jego danych wyjściowych i błędów do pliku. Dlaczego takie zamawianie? i jak mogę zmienić kolejność?
Spróbuj F.flush(), przed uruchomieniem podprocesu. – gcbirzan
Pracowałem! Czy możesz zamieścić to jako odpowiedź z małym wyjaśnieniem? – amyassin