Python脚本写入txt后无法实时读取更新内容,如何解决?
问题原因及解决方法
你的问题核心是文件写入后未及时刷新缓冲区并关闭文件:Python的文件对象默认会把写入数据暂存在内存缓冲区,只有关闭文件或手动刷新时,才会把内容真正写入磁盘。所以你在写完立刻读取时,读到的还是磁盘上的旧内容。另外代码里混用了doc.txt和DOC.txt,虽然部分系统不区分大小写,但统一文件名能避免潜在问题。
修复方案
用with语句管理文件操作是最规范的做法,它会自动帮你处理文件关闭、缓冲区刷新,不用手动调用close():
def coca(): print("Write your annotation:") escolha = input() # 用with打开写入文件,自动处理关闭和刷新 with open('doc.txt', 'a', encoding='utf-8') as arquivo1: arquivo1.write(escolha) arquivo1.write(" \n") # 合并空格与换行,避免多余空行 # 写入完成后再读取文件 print("Your annotation:") with open("doc.txt", 'r', encoding='utf-8') as f: print(f.read()) x = 0 while x < 1: coca() repetir = input("Do you wish to add anything else to your annotation? Y or N ").lower() if repetir == 'n': print('Goodbye.') x += 1
关键改动说明
with语句的使用:无论代码是否出现异常,都会自动关闭文件,确保缓冲区内容写入磁盘。- 统一文件名:全程使用
doc.txt,规避大小写不一致带来的潜在问题。 - 编码指定:添加
encoding='utf-8',避免不同操作系统下的编码乱码问题。 - 换行优化:将空格与换行合并写入,减少不必要的空行。
如果不想用with,也可以在写入后手动调用arquivo1.flush()和arquivo1.close(),之后再读取文件,但with是更安全、易维护的写法。
内容的提问来源于stack exchange,提问作者Iadoa
相关产品推荐
相关产品推荐

