如何使用Python将同文件夹下多个CSV文件合并为单个文件?
现有代码疏漏
- 路径匹配规则错误:现有代码
path + ".csv"缺少通配符*,也未处理路径末尾的分隔符,完全无法匹配到目标csv文件。 - 列表操作语法错误:向列表追加元素需要调用
append()方法,现有代码file_list(df)错误将列表对象作为函数调用,运行时会直接抛出类型错误。 - 缺少数据合并逻辑:读取所有文件内容到列表后,没有执行多数据拼接步骤。
- 缺少结果导出步骤:没有将合并后的数据写入到
final_file.csv的相关代码。
修改后可运行代码
pandas实现(适合需要后续做额外数据处理的场景)
import pandas as pd import glob import os # 替换为你的csv文件所在文件夹路径 path = "./your_csv_folder" # 匹配路径下所有符合命名规则的csv文件,兼容不同操作系统的路径格式 all_files = glob.glob(os.path.join(path, "file_*.csv")) file_list = [] for filename in all_files: df = pd.read_csv(filename) file_list.append(df) # 合并所有数据,默认仅保留一次表头 combined_df = pd.concat(file_list, ignore_index=True) # 导出最终文件,不写入pandas自动生成的行索引 combined_df.to_csv(os.path.join(path, "final_file.csv"), index=False, encoding="utf-8")
纯文件操作实现(适合超大量小文件场景,内存占用极低,运行速度更快)
import glob import os path = "./your_csv_folder" all_files = glob.glob(os.path.join(path, "file_*.csv")) with open(os.path.join(path, "final_file.csv"), "w", encoding="utf-8") as out_file: # 写入第一个文件的表头和数据行 with open(all_files[0], "r", encoding="utf-8") as f: lines = f.readlines() out_file.write(lines[0]) out_file.write(lines[1]) # 剩余文件仅写入数据行,跳过重复表头 for filename in all_files[1:]: with open(filename, "r", encoding="utf-8") as f: out_file.write(f.readlines()[1])
内容的提问来源于stack exchange,提问作者LdM
相关产品推荐
相关产品推荐

