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

Python使用csv模块写入文件前如何清空原有内容避免内容追加

问题原因分析
  • 你使用r+模式打开CSV文件,当你在__init__方法中用reader读完所有文件内容后,文件指针已经移动到了文件末尾,后续调用writerow/writerows方法时,自然会从末尾位置开始写入,表现为追加内容。
  • 就算你手动把指针移回文件开头,如果修改后的文件内容长度比原文件短,指针后的旧内容会残留,也无法得到预期结果。
解决方法

只需要修改write_table方法,写入前将指针移到文件开头,写入完成后截断文件即可:

def write_table(self):
    # 移动指针到文件起始位置
    self.file.seek(0)
    self.wo.writerows(self.table_list)
    # 清空当前指针位置之后的所有残留内容
    self.file.truncate()

修改后你原有的调用逻辑不需要做任何改动,即可实现覆盖原文件写入修改后的表格内容的效果。

可选优化方案

如果担心文件读写过程中出现异常导致原文件损坏,也可以采用读写分离的逻辑:

  1. 先以只读模式打开文件,读取所有内容到内存后直接关闭文件
  2. 完成内存中数据的修改后,再以写模式(w)打开文件,写入全部内容后关闭
    这种方式不需要处理指针和截断,逻辑更简单,也避免了读写同个句柄可能出现的异常问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:45:02