我有一個調用可執行文件的python腳本。可執行文件的輸出會被重定向到一個日誌文件以及一些關於它被調用的時間的信息。例如,使用python -V
作爲可執行來說明:爲什麼子進程標準輸出到文件是亂序寫入的?
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)
文件LOGFILE.txt
的輸出是:
Python 2.7.3
******
Events on 2013-04-10 19:27:25 :
凡我所期待的,如下所示:
******
Events on 2013-04-10 19:27:25 :
Python 2.7.3
我寫的在運行子進程並將其輸出和錯誤重定向到文件之前,打開的日誌文件中包含******
和時間信息。爲什麼要這樣訂購?以及如何重新訂購?
嘗試F.flush(),然後運行子進程。 – gcbirzan 2013-04-10 16:37:48
工作!你可以把它作爲一個答案和一個小解釋嗎? – amyassin 2013-04-10 16:39:17