我在python中做print语句。我正在执行我的脚本:
python script.py > out.log nohup &
打印报表并未全部显示在out.log
中,但程序正在完成。
该行代码位于.sh
文件中
我执行./script.sh
更新:日志会获取所有数据,但直到打印出一定数量的行。它似乎是在缓冲输出。
答案 0 :(得分:24)
当stdout被发送到tty时,它将被行缓冲,并且每行都会被刷新,但是当重定向到文件或管道时,它将被完全缓冲,并且只有在溢出缓冲区时才会定期刷新。
如果您希望输出立即可见,则必须在每行后添加sys.stdout.flush()
次调用,或者完全禁用缓冲。请参阅Disable output buffering了解后者的方法:
- 使用
-u
命令行开关- 在每次写入后刷新的对象中包裹
sys.stdout
- 设置
PYTHONUNBUFFERED
env var- 醇>
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
答案 1 :(得分:1)
你有没有尝试过:
这些步骤可以帮助您“回家”解决问题。