所以我有一个程序,它将程序的输出写入文本文件,但它不会将打印出的所有行都写入文本文件。有什么方法可以增加这一点吗?下面是一个代码示例:
import sys
sys.stdout = open('thefile.txt', 'w')
#Lots of printing here, but not all is written to the text file.
有办法提高这个限额吗?还是没有?编辑:没关系,我刚刚发现问题,我不小心过早地结束了节目。
您很可能错过了为sys.stderr
做同样的事情。然而,你不应该那样做。如果你想让stdout和stderr进入一个文件,只需像一样调用你的程序
python prog.py >thefile.txt 2>&1
很可能您看到的输出将同时发送到sys.stderr
和sys.stdout
。要进行测试,您可以在两个位置使用相同的文件句柄:
fh = open('thefile.txt', 'w')
stdout_, stderr_ = sys.stdout, sys.stderr
sys.stdout = sys.stderr = fh
# the code you're importing or printing from
# to restore the defaults.
sys.stdout = stdout_
sys.stderr = stderr_
除了重定向标准错误输出外,在写入文件后不要忘记正确关闭文件。如果不这样做,输出可能无法正确同步,文件末尾可能会丢失。Python的with
构造非常适合这些情况:
with open('thefile.txt', 'w') as f:
# do the magic here
pass