【问题标题】:Convert multiple csv files to json using python使用python将多个csv文件转换为json
【发布时间】:2019-06-26 05:25:54
【问题描述】:

我正在尝试将文件夹中的 csv 文件转换为单个 json 文件。下面的代码完成了这项工作,但问题是,json 文件的第一个 csv 写入了多次。下面是我试过的代码。我想我在分配数据变量时出错了。帮我修一下

import csv, json, os
dir_path = 'C:/Users/USER/Desktop/output_files'
inputfiles = [file for file in os.listdir(dir_path) if file.endswith('.csv')]
outputfile = "data_backup1.json"

for file in inputfiles:
    filepath = os.path.join(dir_path, file)
    data = {}
    with open(filepath, "r") as csvfile:       
        reader = csv.DictReader(csvfile)
        for row in reader:
            id = row['ID']
            data[id] = row

    with open(outputfile, "a") as jsonfile:
        jsonfile.write(json.dumps(data, indent=4))

预期输出:Json 文件需要每个 csv 只写入一次。

【问题讨论】:

    标签: json python-3.x csv


    【解决方案1】:

    如果您的 .csv 文件和所有行确实有不同的 ['ID']s,那么您分配的字典键应该是唯一的。在这种情况下,您的字典正在增长,每个阅读器 .csv 行一个条目。

    您必须如下所示更改 jsonfile.write() 函数的缩进,以仅生成一个 .json 文件。要对条目进行排序,您可以在此函数中添加 sort_keys=True

    for file in inputfiles:
        filepath = os.path.join(dir_path, file)
        data = {}
        with open(filepath, "r") as csvfile:       
            reader = csv.DictReader(csvfile)
            for row in reader:
                id = row['ID']
                data[id] = row
    
    with open(outputfile, "a") as jsonfile:
        jsonfile.write(json.dumps(data, indent=4, sort_keys=True))
    

    【讨论】:

      猜你喜欢
      • 2019-01-04
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2022-09-23
      • 2021-04-26
      • 2019-03-25
      • 1970-01-01
      • 2021-12-05
      相关资源
      最近更新 更多