Python脚本输出重定向至文件无效,如何实现实时写入?
问题解答
确实是输出被缓存了。Python的标准输出(stdout)在重定向到文件时,默认采用块缓冲模式,只有当缓冲区满或者程序退出时才会把内容写入文件,所以你看不到实时输出。
以下是几种让输出立即写入文件的方法:
运行脚本时添加
-u参数,强制Python禁用标准输出的缓冲:python -u test.py > test.log修改脚本中的
print语句,添加flush=True参数,每次打印后强制刷新缓冲区:import time while True: print("test", flush=True) time.sleep(10)在脚本开头手动配置标准输出为无缓冲模式(需要导入
sys和os模块):import sys import os import time # 重新设置stdout为无缓冲 sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) while True: print("test") time.sleep(10)
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

