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

Python如何删除并替换文本文件中的原有字符串内容

问题原因

使用r+模式打开文件时,read()操作读取完所有原有内容后,文件读写指针会停在原有内容的末尾位置,此时直接调用write()写入新内容,自然会将新内容拼接在旧内容后方。就算手动将指针移回文件开头,若新写入的内容长度短于原有内容,文件末尾残留的旧内容字符也会造成数据错误,例如原有值为1234,新值为5,直接从开头写入会得到5234的错误结果。

修复方案

方案1:保留单文件打开模式,补全指针操作和截断逻辑

写入前将指针移回文件开头,写入完成后调用truncate()清除指针后方所有残留的旧内容即可,代码如下:

with open("fullHours.txt", "r+", encoding="utf-8") as fullHours:
    current_val = int(fullHours.read())
    # 将读写指针移回文件起始位置
    fullHours.seek(0)
    new_val = current_val + int(new_number)
    fullHours.write(str(new_val))
    # 截断文件,清除写入位置后所有残留的旧内容
    fullHours.truncate()

方案2:拆分读写步骤,逻辑更简单不易出错

先以读模式打开文件取出旧值计算结果,再以w写模式(该模式打开文件时会自动清空全部原有内容)打开文件写入新值,不需要手动处理指针和截断,代码如下:

# 读取现有存储值
with open("fullHours.txt", "r", encoding="utf-8") as f:
    current_val = int(f.read())

# 计算新值后覆盖写入
new_val = current_val + int(new_number)
with open("fullHours.txt", "w", encoding="utf-8") as f:
    f.write(str(new_val))

提示:上述代码默认fullHours.txt已存在且存储的内容为合法整数,若需要兼容文件不存在、内容格式非法的场景,可以自行添加异常捕获逻辑做对应处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:03:15