如何批量将旧CSV文件的表头复制到对应无表头的新CSV文件
批量插入CSV表头解决方案
操作前请先备份所有新CSV文件,避免数据丢失
适用场景说明
- 新CSV文件存放在
文件夹1,命名规则为newcsv[序号].csv,无表头 - 旧CSV文件存放在
文件夹2,命名规则为oldcsv[序号].csv,首行是正确表头 - 同序号的新旧CSV列数完全一致
Python 实现脚本(跨平台通用,适合入门用户)
无需安装额外依赖,使用Python自带标准库即可运行:
import os import csv # 请修改为你自己的两个文件夹的实际路径 new_dir = "./文件夹1" # 新CSV文件夹路径 old_dir = "./文件夹2" # 旧CSV文件夹路径 # 遍历旧文件夹里的所有符合命名规则的旧CSV for old_filename in os.listdir(old_dir): if old_filename.startswith("oldcsv") and old_filename.endswith(".csv"): # 提取文件序号 seq = old_filename.replace("oldcsv", "").replace(".csv", "") new_filename = f"newcsv{seq}.csv" new_path = os.path.join(new_dir, new_filename) old_path = os.path.join(old_dir, old_filename) # 检查对应新文件是否存在 if not os.path.exists(new_path): print(f"跳过:对应新文件{new_filename}不存在") continue # 读取旧文件表头 with open(old_path, "r", encoding="utf-8", newline="") as f: reader = csv.reader(f) header = next(reader) # 读取新文件所有内容 with open(new_path, "r", encoding="utf-8", newline="") as f: reader = csv.reader(f) new_content = list(reader) # 表头插入到首行,写回新文件 new_content.insert(0, header) with open(new_path, "w", encoding="utf-8", newline="") as f: writer = csv.writer(f) writer.writerows(new_content) print(f"已完成:{new_filename}插入表头")
使用步骤
- 将上述代码保存为
add_csv_header.py - 修改代码开头的
new_dir和old_dir为你本地两个文件夹的实际路径(Windows路径可以写成C:/xxx/文件夹1或者C:\\xxx\\文件夹1格式) - 如果运行提示编码错误,把代码里的
encoding="utf-8"改为encoding="gbk"再试 - 打开终端/命令提示符,进入代码保存的目录,运行
python add_csv_header.py即可
Shell 脚本(适用于macOS/Linux系统)
如果你使用的是类Unix系统,也可以用更简单的Shell命令批量处理:
# 先cd到两个文件夹所在的上级目录 for i in {1..100}; do # 这里的100改为你实际的最大文件序号 head -n1 文件夹2/oldcsv$i.csv > temp.csv cat 文件夹1/newcsv$i.csv >> temp.csv mv temp.csv 文件夹1/newcsv$i.csv done
内容的提问来源于stack exchange,提问作者eharper
相关产品推荐
相关产品推荐

