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

如何批量替换目录下所有CSV文件的表头且保留其余数据?

批量替换CSV文件统一表头的正确实现

原代码失效原因

你之前的代码运行后数据丢失,核心是两个逻辑错误:

  • 对同一个文件先开读句柄,紧接着就用w(写入覆盖模式)打开同路径文件,w模式会直接清空原文件的全部内容,后续再从已经被清空的读句柄拷贝数据,自然读不到任何原有内容。
  • 就算文件没有被提前清空,直接用copyfileobj拷贝全量内容,会把旧的第一行表头也一起写入,达不到替换表头的效果。

可直接运行的正确代码

代码支持自定义任意表头,除第一行旧表头外所有数据会完整保留:

import glob
import os

# 自定义统一表头,列之间用英文逗号分隔,支持任意合法内容
# 示例1:NEW_HEADER = "Apple,Orange,Lemon,Pear,Peach\n"
# 示例2:NEW_HEADER = "1,j,er,fd,j5\n"
NEW_HEADER = "id,t,s,p,date,e\n"
# 替换为你存放CSV文件的文件夹路径匹配规则
TARGET_PATH = "/home/robert/Testing/D1/*.csv"

for file in glob.glob(TARGET_PATH):
    if not os.path.isfile(file):
        continue
    # 先读取原文件全部内容,跳过第一行旧表头
    with open(file, "r", encoding="utf-8") as rf:
        data_rows = rf.readlines()[1:]
    # 写入新表头 + 原有剩余数据
    with open(file, "w", encoding="utf-8") as wf:
        wf.write(NEW_HEADER)
        wf.writelines(data_rows)

使用说明

  • 替换表头只需要修改NEW_HEADER变量的赋值即可,注意字符串末尾要保留\n换行符,避免新表头和第一行数据粘连。
  • 如果你的CSV文件使用GBK等其他编码,把代码里的encoding="utf-8"替换为对应编码参数即可。
  • 批量操作前建议先备份原文件,避免编码不匹配、路径写错等问题导致数据异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:33:19