为了澄清这一点,只有在将标准输出定向到文件时,直接打印到终端才能正常工作.另外,我用的是Mac,所以不是stdbuf
之类的.
我有一个非常简单的文件test.py
:
import time
print("start", flush=True)
time.sleep(1)
print("end")
我拿python3 test.py > test.txt
美元来算.这很有效,在延迟1秒后,start
显示出来,end
显示出来.现在我想导入NumPy:
import time
import numpy # <-
print("start", flush=True)
time.sleep(1)
print("end")
再运行一次.现在,在延迟1秒后,start
和end
同时出现.
在这一点上,我已经try 了所有我能想象到的东西:
- 这里的一切:Disable output buffering
- 使用
out = file("test.txt", "w"); out.write("start\n")
- 打印到终端并定向到带有
python3 test.py 2>&1 | tee /tmp/ls.txt
的文件
编辑:我应该补充的是,用CTRL-C中断程序确实会让start
显示出来.