Как преобразовать большую часть csv в json - PullRequest
0 голосов
/ 01 августа 2020

Ниже приведен код для преобразования одного файла csv в json

Список всех файлов в каталоге

[data1.csv, data2.csv, data.csv]

Ниже приведен код для преобразования одного файла в json. Например, мне нужно l oop все файлы

import csv 
import json 
import os
import glob

os.chdir(r'dir' )
result = glob.glob( '*.csv' )
print (result) 
def make_json(csvFilePath, jsonFilePath): 
      
    for i in result:
        data = {} 
        with open(csvFilePath, encoding='utf-8') as csvf: 
            csvReader = csv.DictReader(csvf) 
            for rows in csvReader: 
                key = rows['id'] 
                data[key] = rows 
        with open(jsonFilePath, 'w', encoding='utf-8') as jsonf: 
            jsonf.write(json.dumps(data, indent=4)) 
        csvFilePath =f"{i}"
        jsonFilePath =f"{i.split('.')[-2]}.json"
make_json(csvFilePath, jsonFilePath)

У меня есть похожие файлы, которые нужно преобразовать в json. в каждом файле id первичный ключ

файлов много. Я не хочу менять csvFilePath и jsonFilePath каждый раз.

Проблема, с которой сталкивается?

  • Все мои json файлы заканчиваются на .csv.json
  • Последний файл имя data9.csv не преобразуется в json, а data2 преобразуется дважды, как data2. json и data2.csv. json

1 Ответ

1 голос
/ 01 августа 2020

Вот подход,

import glob
import pandas as pd

for csv_f in glob.glob('/<file_path>/*.csv'):
    with open(f'{csv_f.replace(".csv", ".json")}', "w") as f:
        pd.read_csv(csv_f).set_index('id') \
            .to_json(f, orient='index')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...