在python中调用bash命令时,定期将输出保存到文件中

时间:2013-07-23 08:11:42

标签: python bash subprocess stdout

我正在调用一个外部c ++程序,它使用subprocess.check_output生成大量输出,并将stdout保存到日志文件中。但是c ++程序可能需要很长时间才能完成,但是我想在它完成之前查看stdout,就像我通过bash命令行直接执行c ++程序一样。

当然,我可以通过使用fstream直接修改我的c ++程序来保存输出。但是我想知道在python中是否有任何可以拦截标准输出的解决方案。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

如果将输出保存到日志文件中,为什么不将subprocess.callstdout设置为打开的日志文件?

with open("logfile") as logfile:
  subprocess.call("run_my_program arg1 arg2", shell=True, stdout=logfile)

然后,一个简单的tail -f logfile将在程序执行期间显示日志的内容。