将Python代码的stdout重定向到一个文件,而不用让Python锁定它

1 人关注

我正在尝试最简单的方法,即重定向 stdout 的一个 python 使用下面这样的命令,将代码输入到一个文件中。

python foo.py > SmokeyStover.log

This works fine except I need to stop my python代码,以便能够将添加的日志读入该日志文件,并将结果用于命令,如

tail -f SmokeyStover.log 

当代码运行时,使用python解释器,在实时的日志流中没有传入的日志被不断追加到这个文件中。

我还使用了其他方法来重定向stdio里面的内容。python使用下面这样的命令,文件根本没有被刷新。

sys.stdout = open('SmokeyStover.log', 'a')
    
2 个评论
替换代码0】的输出将被重定向到 SmokeyStover.log 。但在你停止 python foo.py 之前,它不会将数据冲到 SmokeyStover.log ,这是我的理解。
Try python -u foo.py > SmokeyStover.log for unbuffered output. If this is linux you could d osomething like python foo.py | tee xxx.log
python
linux
file-io
stdout
Mehrad
Mehrad
发布于 2014-06-11
1 个回答
b.b3rn4rd
b.b3rn4rd
发布于 2014-06-11
已采纳
0 人赞同

比如说,你可能要手动冲洗缓冲区。

import sys
import time