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

如何修改CSV文件指定行且不擦除全部内容?最高效的实现方法是什么?

问题原因

你的代码出现文件清空且修改无效的问题,主要有4个错误:

  • 打开文件使用了'w'写入模式,该模式打开文件时会直接清空原有内容,后续readlines()根本读不到任何数据
  • 文件名file.csv没有加引号,属于语法错误,正常运行会直接报错
  • Python字符串是不可变类型,line_4.replace()只会返回修改后的新字符串,不会修改原变量,你没有接收这个返回值等于没做修改
  • 修改完内容后没有将新内容写回文件
实现方案

小文件适用方案(常规CSV优先使用)

普通CSV文件体积通常不大,直接读取全部内容到内存修改后写回,代码最简单易维护:

# 只读模式读取所有行
with open('file.csv', 'r', encoding='utf-8') as f:
    lines = f.readlines()

# 确保文件至少有4行再修改,避免索引报错
if len(lines) >= 4:
    # 注意末尾加换行符,和原文件行格式保持一致
    lines[3] = 'Temperature Level Wave Degre\n'

# 写回修改后的全部内容
with open('file.csv', 'w', encoding='utf-8') as f:
    f.writelines(lines)

大文件适用方案(文件体积超过内存可用空间时使用)

如果CSV文件体积特别大,一次性读入内存会导致内存溢出,可以用临时文件逐行处理,内存占用极低:

import os
import tempfile

file_path = 'file.csv'
# 逐行读取原文件,写入临时文件
with open(file_path, 'r', encoding='utf-8') as src_file, \
     tempfile.NamedTemporaryFile('w', delete=False, encoding='utf-8') as tmp_file:
    for line_num, content in enumerate(src_file, 1):
        if line_num == 4:
            tmp_file.write('Temperature Level Wave Degre\n')
        else:
            tmp_file.write(content)

# 用修改后的临时文件替换原文件
os.replace(tmp_file.name, file_path)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:39:04