读取多个JSON文件并将数据转换为单个CSV文件

时间:2019-10-25 20:28:38

标签: python json csv

我每天需要接收大约50个JSON文件,我需要将它们转换/合并为一个CSV文件。我是编程和Python的新手。我已经能够将单个JSON文件正确转换为CSV。尽管试图创建一个循环来读取目录中的新文件,但我已经奋斗了几天。 对于如何读取最近24小时内创建的目录中的所有JSON文件,我们将不胜感激。

我正在附上我的工作代码,该代码目前按名称读取单个文件。

import json
import csv

def get_leaves(item, key=None):
    if isinstance(item, dict):
        leaves = {}
        for i in item.keys():
            leaves.update(get_leaves(item[i], i))
        return leaves
    elif isinstance(item, list):
        leaves = {}
        for i in item:
            leaves.update(get_leaves(i, key))
        return leaves
    else:
        return {key: item}

with open('test2.json') as f_input:
    json_data = json.load(f_input)

fieldnames = set()

for entry in json_data:
    fieldnames.update(get_leaves(entry).keys())

with open('output.csv', 'a', newline='') as f_output:
    csv_output = csv.DictWriter(f_output, fieldnames=sorted(fieldnames))
    csv_output.writeheader()
    csv_output.writerows(get_leaves(entry) for entry in json_data)

1 个答案:

答案 0 :(得分:0)

假设您的代码中有一个名为 convert_file_to_csv(path)的函数,可以将文件传递为csv格式,则可以创建如下例程:


import os

files = os.listdir()
for path in files:
    convert_file_to_csv(path)

现在唯一认为丢失的是在每次调用中将标头添加到 convert_file_to_csv ,在这种情况下,应检查.csv文件是否为新文件。并仅在新标题时添加标题。

您可以将已经移植的文件保存在控制文件或日志文件中,以了解文件的名称或上次更新的时间。

相关问题