簡體   English   中英

使用python將多個csv文件轉換為json

[英]Convert multiple csv files to json using python

我正在嘗試將文件夾中的 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 僅寫入一次。

如果您的 .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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM