You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python批量转换文件夹多JSON文件为CSV的代码修改咨询

批量JSON转CSV方案解答

是否需要导入glob库

是需要的。glob是Python内置标准库,不需要额外安装,专门用于匹配指定路径下符合规则的文件,刚好可以快速获取目标文件夹下所有.json后缀的文件,不用手写复杂的文件遍历逻辑,非常适合新手使用。

原代码核心问题

  • 错误将*.json作为文件名传入codecs.open,该函数只能打开单个文件,不支持通配符匹配多文件
  • sys.argv[0]取到的是当前运行的Python脚本自身的路径,不是你要传入的JSON存放目录参数
  • 路径硬编码,没有多文件遍历逻辑,只能处理单个固定文件

修改后的可运行代码

# -*-coding:utf-8 -*-
import csv
import json
import sys
import glob
import os

def trans(json_dir, output_csv_path):
    # 打开CSV文件准备写入
    csvfile = open(output_csv_path, 'w', encoding='utf-8', newline='')
    writer = csv.writer(csvfile, delimiter=',')
    flag = True
    # 用glob匹配目录下所有json后缀文件
    all_json_files = glob.glob(os.path.join(json_dir, "*.json"))
    for json_file in all_json_files:
        # 逐个打开JSON文件
        with open(json_file, 'r', encoding='utf-8') as f:
            for line in f:
                line = line.strip()
                if not line:
                    continue
                dic = json.loads(line)
                # 第一次写入先写表头
                if flag:
                    keys = list(dic.keys())
                    writer.writerow(keys)
                    flag = False
                writer.writerow(list(dic.values()))
    csvfile.close()

if __name__ == '__main__':
    # 第一个参数是脚本名,第二个参数是你存放JSON的文件夹路径,第三个是输出CSV路径
    if len(sys.argv) != 3:
        print("使用方法:python 脚本文件名.py JSON文件夹路径 输出CSV完整路径")
        print("示例:python json2csv.py C:/Users/jeri/Desktop/json_folder C:/Users/jeri/Desktop/output.csv")
        sys.exit(1)
    json_dir = sys.argv[1]
    output_csv = sys.argv[2]
    trans(json_dir, output_csv)

注意事项

  • 请保证所有待转换的JSON文件结构完全一致,否则CSV的列会出现错位
  • 代码默认处理的是行存储格式的JSON(也就是每行是一个独立的JSON对象,和你原有代码逻辑一致),如果你的JSON文件是整个文件为单个JSON数组/对象,需要调整读取逻辑
  • 运行时直接在命令行按照说明传入对应路径即可运行

内容的提问来源于stack exchange,提问作者jeri teri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:30:00