import os
import pandas as pd
def merge_csv_files(folder_path, output_file):
"""
合并指定文件夹中的所有CSV文件
参数:
folder_path (str): 包含CSV文件的文件夹路径
output_file (str): 合并后的输出文件路径
"""
# 检查文件夹是否存在
if not os.path.exists(folder_path):
print(f"错误: 文件夹 '{folder_path}' 不存在")
return
# 获取文件夹中所有CSV文件的列表
csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
if not csv_files:
print(f"错误: 文件夹 '{folder_path}' 中未找到CSV文件")
return
# 创建一个空的DataFrame用于存储合并后的数据
merged_data = pd.DataFrame()
# 遍历并合并所有CSV文件
for _inx,csv_file in enumerate(csv_files):
file_path = os.path.join(folder_path, csv_file)
print(f"{_inx} 处理文件 '{csv_file}' ")
try:
# 读取CSV文件
df = pd.read_csv(file_path)
# 如果是第一个文件,直接使用其数据和表头
if merged_data.empty:
merged_data = df
else:
# 确保后续文件的列与第一列匹配
if list(df.columns) == list(merged_data.columns):
merged_data = pd.concat([merged_data, df], ignore_index=True)
else:
print(f"警告: 文件 '{csv_file}' 的列与其他文件不匹配,已跳过")
except Exception as e:
print(f"错误: 处理文件 '{csv_file}' 时出错: {str(e)}")
# 保存合并后的数据到新的CSV文件
if not merged_data.empty:
try:
merged_data.to_csv(output_file, index=False)
print(f"成功合并 {len(csv_files)} 个CSV文件到 '{output_file}'")
print(f"合并后的文件共有 {len(merged_data)} 行数据")
except Exception as e:
print(f"错误: 保存合并后的文件时出错: {str(e)}")
else:
print("合并失败: 没有有效的数据可保存")
if __name__ == "__main__":
# 设置文件夹路径和输出文件路径
folder_path = "result" # 要合并的CSV文件所在文件夹
output_file = "result/result.csv" # 合并后的输出文件名
# 执行合并操作
merge_csv_files(folder_path, output_file)