0

我正在使用子进程来运行可执行文件并使用通信管道输出它的输出。最后,我将通信的内容写入文件。确切的代码如下所示

run = subprocess.Popen(['executable'], stdout=subprocess.PIPE)
output = run.communicate()[0]
logfile = open('run.log', 'a')
logfile.write(output)
logfile.close()

在上述过程中,日志文件是在运行结束时写入的。但是,有没有办法在可执行文件运行时将输出写入日志?

4

2 回答 2

2

你的意思是这样的:

with open("run.log","a") as f:
      run = subprocess.Popen(['executable'], stdout=f)
于 2014-10-13T22:58:32.043 回答
0

我想我找到了解决方案:

logfile = ('run.log', 'w')
run = subprocess.Popen(['executable'], stdout = logfile)
run.wait()
logfile.close()

第一行创建run.log用于写入并stdout在可执行文件运行时直接写入日志文件。run.wait()等待可执行文件完成,然后关闭日志文件。

于 2014-10-15T22:51:59.733 回答