[英]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.