【发布时间】:2015-11-06 23:32:41
【问题描述】:
我有一个在后台启动时运行的 python 脚本。它的打印命令不会像手动调用脚本时那样传递到 bash 控制台,例如python script.py。可以通过调用python script.py > log.txt 2>&1 将输出和错误重定向到文件。但是启动后,随着脚本的运行,我可以看到日志文件,但它的大小为零,所以大概是在等待脚本结束。使用 cat 调用它不会返回任何内容。我试过用 append >> 代替,但没有运气。
有什么办法可以让输出实时发生,以便查看?
【问题讨论】:
-
一定要flush the output 确保缓冲不是罪魁祸首。
-
使用 stderr 记录 - 它没有缓冲。见stackoverflow.com/questions/15860372/…
-
@chrisaycock 是正确的,将
sys.stdout.flush()插入代码可以修复它。对于哪种方法是最佳的,有什么强烈的看法吗? -
它们基本相同。在 stderr 情况下,它只是在内部为您调用
flush()。 -
@chrisaycock 欢迎作为答案提交,或者如果您愿意,我可以提交?