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
相关产品推荐
相关产品推荐

