Python 如何将大量csv转换为json

Python 如何将大量csv转换为json,python,json,csv,Python,Json,Csv,下面是将一个csv文件转换为json的代码 列出目录中的所有文件 [data1.csv、data2.csv、data.csv] 下面是将一个文件转换为json的代码。就像我需要循环所有文件一样 import csv import json import os import glob os.chdir(r'dir' ) result = glob.glob( '*.csv' ) print (result) def make_json(csvFilePath, jsonFilePath):

下面是将一个csv文件转换为json的代码

列出目录中的所有文件

[data1.csv、data2.csv、data.csv]

下面是将一个文件转换为json的代码。就像我需要循环所有文件一样

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的两倍
    • 这里有一种方法

      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')
      
      导入全局
      作为pd进口熊猫
      对于glob.glob('//*.csv')中的csv_f:
      将open(f'{csv_f.replace(“.csv”,“.json”)}',“w”)作为f:
      pd.read\u csv(csv\u f).设置索引('id'))\
      .to_json(f,orient='index')
      
      @WeavingBird1917有很多文件。我不想更改csvFilePath和jsonFilePatheverytime@WeavingBird1917,它不是一个输入错误,而是一个变量名。要在目录中的文件上进行迭代,您可以使用
      os.listdir()
      (仅限当前目录)或
      os.walk()
      (递归目录)。您能澄清您的问题吗?如果您可以转换一个文件,是什么阻止您转换一个又一个文件?显然,您已经知道如何使用
      for
      循环,在每个文件名上循环调用
      make_json
      有什么困难?看看
      str.replace()
      函数,您可以用
      .json
      替换名称的
      .csv
      部分。