问题描述
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。在程序未执行到bug时,不会报错。所以在文件写入过程中,如果没有实时写入,可能导致出错前执行的待写入文件的在缓存中未及时写入文件而导致文件丢失。
比如下面这段程序:
fout = open("test.log","w+")
for i in range(10):
fout.write(str(i)+"\n")
if i ==5:
fout.write(i+"\n")
fout.close()
程序执行结果
test.log本来应该已经写入6行数据了,但是文件中一行数据没有。这是不符合我们之前的预期的。
解决方法
设置缓存为0,默认缓存为-1,同时使用二进制方法写入。
fout = open("test.log","wb+",buffering=0)
for i in range(10):
fout.write(str(i).encode('utf-8')+b"\n")
if i ==5:
fout.write(i+"\n")
fout.close()
打开文件可以看到
问题完美解决~