【问题标题】:python - print to stdout and redirect output to filepython - 打印到标准输出并将输出重定向到文件
【发布时间】:2016-06-26 18:34:48
【问题描述】:

我可以在终端上运行我的 python 脚本并在 stdout 上获取打印结果,例如

python myprog.py

或者只是将其重定向到一个文件:

python myprog.py > out.txt

我的问题是我怎样才能同时做这两种解决方案。 我的 linux 经验会告诉我:

python myprog.py |& tee out.txt

这不是我预期的行为,在程序结束时即时打印,而不是一次全部打印。

所以我想要的(最好不更改 python 代码)与python myprog.py 的行为相同(即时打印),但也将输出重定向到文件。

最简单的方法是什么?

【问题讨论】:

    标签: python redirect stdout


    【解决方案1】:

    聚会迟到了(我的最后一个答案很糟糕),但您可以查看logging 库。请参阅here 以获得更完整的文档,但其要点是为日志库使用两个输出。类似的问题可以在here找到。

    【讨论】:

      【解决方案2】:

      您想使用“三通”。 stdbuf -oL python mycode.py | tee out.txt

      【讨论】:

      • 我试过了。这只会在脚本完成时将结果放在标准输出上,我想即时更新标准输出!
      • 尝试在我的更新中将 stdbuf -oL 放在 python 前面。请参阅手册页以获取说明linux.die.net/man/1/stdbuf