私は実行可能ファイルを呼び出すpythonスクリプトを持っています。実行可能ファイルの出力は、呼び出された時刻に関する情報と共にログファイルにリダイレクトされます。たとえば、実行可能ファイルとしてpython -V
を使用しては説明する:ファイルへのサブプロセスstdoutが順序どおりに書き込まれないのはなぜですか?
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
Worked!ちょっと説明して答えとして投稿できますか? – amyassin