我每天需要接收大约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)
答案 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文件是否为新文件。并仅在新标题时添加标题。
您可以将已经移植的文件保存在控制文件或日志文件中,以了解文件的名称或上次更新的时间。