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

Python删除文本文件前n个字符时写入内容失败问题咨询

问题根因
  • 执行f.readlines()读取完全部文件内容后,文件指针已经移动到了文件的末尾偏移量位置。
  • f.truncate(0)仅会清空文件的内容,不会修改当前文件指针的位置,此时指针仍然停留在原文件的末尾位置。
  • 后续调用f.write(texte1)时,内容会从当前指针位置(远大于清空后文件的0长度位置)开始写入,相当于文件起始位置到指针位置之间被填充了大量空字节,写入的有效内容位于空字节之后,所以直观上看起来文件仍然是空的。
修复方案

在写入内容前调用f.seek(0)将文件指针移动到文件起始位置即可,修改后的代码如下:

def get_texte():
    f = open("hp.txt", "r+", encoding="utf8")
    texte = ''
    nb = 12
    for line in f.readlines():
        texte += line.strip()
    texte1 = texte[nb:]
    f.truncate(0)
    f.seek(0) # 新增该行,将文件指针移动到文件开头
    f.write(texte1)
    f.close()
    return texte
额外优化建议

当前实现会把整个文件内容加载到内存中,处理超大容量文本文件时会占用极高内存,甚至出现内存溢出问题。可以改为按块读取文件、跳过前n个字符后逐块写入新文件,再替换原文件的方式实现,内存占用会低很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:27:03