首页 > 解决方案 > Python将文件夹目录中的多个JSON文件转换为CSV

问题描述

我有很多 JSON 文件,我将它们放在我的文件夹中,我想将它们转换为 CSV 格式,我应该使用 import glob 吗?? 我是新手,怎么修改我的代码,</p>

#-*-coding:utf-8-*-
import csv
import json
import sys
import codecs

def trans(path):
    jsonData = codecs.open('C:/Users/jeri/Desktop/1', '*.json', 'r', 'utf-8')
    # csvfile = open(path+'.csv', 'w') 
    # csvfile = open(path+'.csv', 'wb') 
    csvfile = open('C:/Users/jeri/Desktop/1.csv', 'w', encoding='utf-8', newline='')
    writer = csv.writer(csvfile, delimiter=',')
    flag = True
    for line in jsonData:
        dic = json.loads(line)
        if flag:
            keys = list(dic.keys())
            print(keys)
            flag = False
        writer.writerow(list(dic.values()))
    jsonData.close()
    csvfile.close()

if __name__ == '__main__':
    path=str(sys.argv[0])
    print(path)
    trans(path)

标签: pythonjsoncsv

解决方案


是的,使用 glob 将是遍历文件夹中 .json 文件的好方法!但是 glob 与文件的读/写没有任何关系。导入 glob 后,可以这样使用:

for curr_file in glob.glob("*.json"):
    # Process each file here

我看到您已经使用 json 模块来读取您的代码片段。我会说更好的方法是使用熊猫。

df = pd.read_json()

我这样说是因为有了 pandas 库,您可以使用简单地将 .json 转换为 .csv

df.to_csv('file_name.csv')

将这三个结合在一起,它看起来像这样:

for curr_file in glob.glob("*.json"):
    # Process each file here
    df = pd.read_json(curr_file)
    df.to_csv('file_name.csv')

另外请注意,如果您的 json 有嵌套对象,则不能直接转换为 csv,您必须在转换之前确定数据的组织。


推荐阅读