如何使用Python删除CSV文件中的指定行(首行删除需求)
如何删除CSV文件的第一行?
你的目标CSV内容如下:
user1,user2
user2,user3
先说说你写的代码存在的几个问题:
- 用
"w"模式打开文件会直接清空原有内容,根本没机会读取原数据 - 没有先读取原文件内容,直接循环写入是空操作
- 未初始化CSV写入对象,变量
f未定义,file是文件对象不能直接用来写行
下面给你两种可行的解决方案:
方案1:一次性读写(适合小文件)
这种方式简单直接,把所有行读入内存后跳过第一行再写回去:
import csv # 读取所有行并跳过第一行 with open("info.csv", "r") as infile: rows = list(csv.reader(infile))[1:] # 将剩余行写入原文件 with open("info.csv", "w", newline="") as outfile: writer = csv.writer(outfile) writer.writerows(rows)
方案2:逐行处理(适合大文件)
如果CSV文件很大,一次性读入内存会占用过多资源,用临时文件逐行处理更稳妥:
import csv import os # 读取原文件,同时写入临时文件(跳过第一行) with open("info.csv", "r") as infile, open("temp_info.csv", "w", newline="") as outfile: reader = csv.reader(infile) writer = csv.writer(outfile) # 跳过第一行 next(reader) # 逐行写入剩余内容 for row in reader: writer.writerow(row) # 用临时文件替换原文件 os.replace("temp_info.csv", "info.csv")
注意事项
- 打开文件时加上
newline=""可以避免CSV写入后出现多余空行,这是Python csv模块的规范要求 - 如果你的CSV文件有指定编码(比如gbk),需要在
open()里加上encoding="gbk"参数 - 方案2用临时文件是为了避免修改过程中出现异常导致原文件损坏
内容的提问来源于stack exchange,提问作者dnrksd
相关产品推荐
相关产品推荐

