我有一个调用可执行文件的 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()。这样做的原因是子进程将在完成时刷新缓冲区,而您不会。
关于python - 为什么子进程标准输出到文件的顺序是乱写的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931526/