Python如何遍历文件夹内所有CSV文件并批量转换为JSON文件
批量转换文件夹内CSV到JSON的实现方案
核心实现思路
- 引入Python内置的文件路径处理模块
os,不需要额外安装第三方依赖,即可完成文件夹遍历、路径拼接、后缀名替换的操作。 - 保留原有已经调试通过的单文件转换核心逻辑,不需要重写CSV、JSON读写部分,只需要在外层加一层文件遍历循环即可。
- 遍历目标文件夹时,筛选后缀名为
.csv的文件(可兼容.CSV大写后缀的情况),自动为每个CSV文件生成同名的JSON输出路径,避免手动逐个配置文件名。 - 注意修复原有脚本的小bug:原
convert_write_json函数里连续两次写入JSON内容,会导致生成的JSON文件格式非法,删掉第二次写入的代码即可。
修改后的可运行代码
import csv import json import os # 配置要处理的目标文件夹路径,替换为自己的文件夹路径即可 target_folder = '/users/krzysztofpaszta/CSVtoGD/' # 原有CSV读取逻辑,不需要改动核心逻辑,补充了编码声明避免乱码 def read_CSV(file, json_file): csv_rows = [] with open(file, encoding='utf-8') as csvfile: reader = csv.DictReader(csvfile) field = reader.fieldnames for row in reader: csv_rows.append({field[i]:row[field[i]] for i in range(len(field))}) convert_write_json(csv_rows, json_file) # CSV转JSON写入逻辑,修复了重复写入的bug,补充编码配置 def convert_write_json(data, json_file): with open(json_file, "w", encoding='utf-8') as f: f.write(json.dumps(data, sort_keys=False, indent=4, separators=(',', ': '), ensure_ascii=False)) # 遍历文件夹执行批量处理 if __name__ == '__main__': for filename in os.listdir(target_folder): # 筛选所有CSV格式文件,兼容大写后缀 if filename.lower().endswith('.csv'): # 拼接CSV文件完整路径 csv_full_path = os.path.join(target_folder, filename) # 自动生成对应JSON文件路径:将.csv后缀替换为.json json_filename = os.path.splitext(filename)[0] + '.json' json_full_path = os.path.join(target_folder, json_filename) # 调用转换函数 read_CSV(csv_full_path, json_full_path) print(f"转换完成:{filename} -> {json_filename}")
可选扩展说明
- 如果需要同时处理目标文件夹下所有子文件夹里的CSV文件,把遍历部分的
os.listdir换成os.walk即可实现递归遍历。 - 代码中添加的
encoding='utf-8'和ensure_ascii=False参数可以避免中文、特殊字符乱码,如果你的CSV是其他编码(比如gbk),把encoding参数改成对应编码即可。 - 原有代码中导入了
pandas但没有实际使用,如果不需要其他pandas功能可以删掉这个导入,减少不必要的依赖。
内容的提问来源于stack exchange,提问作者Kamilminiprogramer
相关产品推荐
相关产品推荐

