我正在使用子进程来运行可执行文件并使用通信来管理它的输出。最后,我将通信内容写入文件。确切的代码如下所示
run = subprocess.Popen(['executable'], stdout=subprocess.PIPE)
output = run.communicate()[0]
logfile = open('run.log', 'a')
logfile.write(output)
logfile.close()
在上面的过程中,日志文件在运行结束时写入。但是,有可能在可执行文件运行时将输出写入日志吗?
答案 0 :(得分:2)
你的意思是:
with open("run.log","a") as f:
run = subprocess.Popen(['executable'], stdout=f)
答案 1 :(得分:0)
我想我找到了解决方法:
logfile = ('run.log', 'w')
run = subprocess.Popen(['executable'], stdout = logfile)
run.wait()
logfile.close()
第一行创建run.log
用于写入,stdout
在可执行文件运行时直接写入日志文件。 run.wait()
等待可执行文件完成,然后关闭日志文件。