加载多CSV文件时如何校验表头一致性,不一致时抛出异常
批量CSV合并(表头一致性校验)实现方案
核心逻辑
- 以目录内第一个CSV文件的表头作为校验基准
- 遍历所有CSV文件时优先校验表头,和基准不匹配直接抛出异常终止流程
- 所有文件表头校验通过后,合并全部数据并输出为单个CSV文件
完整实现代码
# 导入依赖库 import pandas as pd import os import glob # 配置路径和输出文件名 path = os.getcwd() # 可替换为你的CSV存放目录绝对路径 output_file = "merged_output.csv" # 获取目录下所有CSV文件 csv_files = glob.glob(os.path.join(path, "*.csv")) # 无CSV文件时提前抛出异常 if not csv_files: raise FileNotFoundError(f"目录{path}下未找到任何CSV文件") df_list = [] base_header = None for f in csv_files: # 读取CSV文件 df = pd.read_csv(f) # 打印文件信息 print('Location:', f) print('File Name:', os.path.basename(f)) # 打印内容(Jupyter环境可替换为display(df)) print('Content:') print(df) print() # 表头校验逻辑 if base_header is None: # 取第一个文件的表头作为基准 base_header = df.columns.tolist() else: current_header = df.columns.tolist() if current_header != base_header: raise ValueError(f"CSV文件表头不一致,异常文件:{os.path.basename(f)},基准表头:{base_header},当前文件表头:{current_header}") df_list.append(df) # 合并所有数据并输出 merged_df = pd.concat(df_list, ignore_index=True) merged_df.to_csv(os.path.join(path, output_file), index=False, encoding='utf-8-sig') print(f"所有CSV文件已合并完成,输出文件路径:{os.path.join(path, output_file)}")
效果说明
当你指定的目录下出现表头不匹配的CSV文件时,代码会立即抛出包含异常文件名、表头差异信息的ValueError,终止合并流程,符合描述的预期场景。
内容的提问来源于stack exchange,提问作者bhavishya alla
相关产品推荐
相关产品推荐

