8

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

******在运行子进程并将其输出和错误重定向到文件之前,我在打开的日志文件中写入了时间信息。为什么会这样下单?我该如何重新排序?

4

1 回答 1

9

您应该在运行子进程之前调用 F.flush()。这样做的原因是子进程将在完成时刷新缓冲区,而您不是。

于 2013-04-10T16:48:47.310 回答