我有一个调用可执行文件的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