我已尝试搜索此问题,但找不到与我遇到的问题类似的任何内容。
我有一个 python 脚本,它使用 for 循环来迭代这些情况,对 6 种不同的情况进行一些计算。在每次迭代期间,我都有各种打印语句将某些计算值写入屏幕。当我运行脚本时仅使用
python time_comp.py
我在屏幕上一一得到了所需的输出(即每次迭代的计算值)。但如果我想将标准输出写入文件,它只会写入最后一次迭代的值。
我尝试了很多网上找到的解决方案:
python time_comp.py > out.dat
python time_comp.py >> out.dat
python time_comp.py 1 > out.dat
python time_comp.py 1 | tee out.dat
所有这些仍然只打印最后一次迭代期间的输出。有谁知道如何将所有迭代的值打印到标准输出文件,而无需在脚本本身中实际打开文件?
提前致谢。
这可能是缓冲问题。 Python 的标准输出 (stdout) 是有缓冲的。
当运行脚本并将输出定向到文件时,您可以尝试强制 Python 以无缓冲模式运行,这使得 stdout 和 stderr 立即将其输出写入目标文件。您可以使用 -u 选项来做到这一点:
python -u time_comp.py > out.dat
如果您可以控制脚本的源代码,则另一种方法是在每个打印语句之后手动刷新输出缓冲区,确保所有输出都按预期写入文件:
import sys
for case in cases:
# Your calculation and print statements here
print('Some output')
sys.stdout.flush()