You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:10:32