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

Python3中已读至末尾的文件写入新内容后如何重新读取?

Python读取文件后,更新内容无法获取新数据的解决方法

问题原因

第一次执行f.read()时,文件指针会移动到文件末尾。即便外部编辑器修改并保存了文件内容,Python的文件对象不会自动感知这种变化,再次调用read()只会从当前指针位置(末尾)开始读取,因此无法获取新增内容。

解决方案

方案1:记录初始文件大小,读取新增内容

通过os.stat获取文件初始大小,待文件更新后,将指针移至初始大小的位置,读取新增部分:

import os

with open("text.txt", "r") as f:
    content = f.read()
    print(content)
    initial_size = os.stat("text.txt").st_size
    
    if input() == "q":
        current_size = os.stat("text.txt").st_size
        if current_size > initial_size:
            f.seek(initial_size)
            print(f.read())

方案2:关闭后重新打开文件读取

如果允许重复读取全部内容,可关闭原文件后重新打开读取:

with open("text.txt", "r") as f:
    print(f.read())

if input() == "q":
    with open("text.txt", "r") as f:
        print(f.read())

注:此方案会再次打印原有内容+新增内容,若仅需新增部分,优先选方案1。

方案3:用seek和tell记录指针位置

通过文件对象的tell()记录初始指针位置,更新后刷新文件状态并读取新增内容:

import os

with open("text.txt", "r") as f:
    print(f.read())
    pos = f.tell()
    
    if input() == "q":
        f.seek(0, os.SEEK_END)
        new_pos = f.tell()
        if new_pos > pos:
            f.seek(pos)
            print(f.read())

内容的提问来源于stack exchange,提问作者EyeDm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:36:20