如何删除CSV文件首列除表头外的值且直接编辑原文件不生成新文件
解决方案
原代码仅在内存中读取并修改了行对象,没有执行写入原文件的操作,因此修改不会持久化到磁盘。
要直接修改原文件,可以先将整个CSV内容读取到内存中处理完成后,再覆盖写入原文件,实现代码如下:
import csv file_path = 'file.csv' # 先读取整个CSV文件内容到内存 rows = [] with open(file_path, 'r', newline='', encoding='utf-8') as f: reader = csv.reader(f) for row in reader: rows.append(row) # 处理内容:保留表头,从第二行开始删除首列 for i in range(1, len(rows)): if rows[i]: # 避免空行报错 del rows[i][0] # 覆盖写入原文件 with open(file_path, 'w', newline='', encoding='utf-8') as f: # 如果要保留原CSV逗号后带空格的格式,可添加参数 delimiter=', ' writer = csv.writer(f) writer.writerows(rows)
注意事项
- 该方案适合普通大小的CSV文件使用,如果文件体积超过可用内存,建议先创建临时文件写入处理后的数据,再替换原文件。
- 操作前建议先备份原文件,避免处理逻辑出错导致数据丢失。
内容的提问来源于stack exchange,提问作者Luleo_Primoc
相关产品推荐
相关产品推荐

