我在python中打印语句。我执行我的脚本如下所示:Python打印语句被缓冲>输出重定向
python script.py > out.log nohup &
打印语句并不都是没有显示在out.log
但该计划被整理好。
这行代码是在.sh
文件 我做./script.sh
更新执行:日志确实让所有但直到行的某些#的打印数据。它似乎在缓冲输出。
我在python中打印语句。我执行我的脚本如下所示:Python打印语句被缓冲>输出重定向
python script.py > out.log nohup &
打印语句并不都是没有显示在out.log
但该计划被整理好。
这行代码是在.sh
文件 我做./script.sh
更新执行:日志确实让所有但直到行的某些#的打印数据。它似乎在缓冲输出。
当stdout发送到tty时,它会被行缓冲,并且每一行都会被刷新,但是当重定向到一个文件或管道时,它将被完全缓冲,并且只会在您溢出缓冲区时被周期性刷新。
如果您希望输出立即可见,或者完全禁用缓冲,则必须在每行之后添加sys.stdout.flush()
调用。见Disable output buffering的方式做后者:
- 使用
-u
命令行开关- 裹
sys.stdout
在刷新后,每写一个对象- 设置
PYTHONUNBUFFERED
的环境变量sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
你尝试:
?
这些步骤可能会帮助您“回归”问题。
感谢您的支持 – user420814 2010-08-18 19:18:10
#1和#2都按预期工作 – user420814 2010-08-18 19:24:38