我正在调用一个外部c ++程序,它使用subprocess.check_output生成大量输出,并将stdout保存到日志文件中。但是c ++程序可能需要很长时间才能完成,但是我想在它完成之前查看stdout,就像我通过bash命令行直接执行c ++程序一样。
当然,我可以通过使用fstream直接修改我的c ++程序来保存输出。但是我想知道在python中是否有任何可以拦截标准输出的解决方案。
提前谢谢!
答案 0 :(得分:1)
如果将输出保存到日志文件中,为什么不将subprocess.call
与stdout
设置为打开的日志文件?
with open("logfile") as logfile:
subprocess.call("run_my_program arg1 arg2", shell=True, stdout=logfile)
然后,一个简单的tail -f logfile
将在程序执行期间显示日志的内容。