【问题标题】:Why is my code not working while converting bulk csv to json?为什么在将批量 csv 转换为 json 时我的代码不起作用?
【发布时间】:2020-08-08 09:15:50
【问题描述】:

有两个 CSV 文件。我需要转换为 JSON。代码如下

import csv 
import json 
import os
import glob

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

我收到错误 > csvFile is not mentioned。但倒数第三行提到了 CSV 文件。

  • 免责声明。请在代码中查找错误。我已经知道 pandas 中的工作代码

【问题讨论】:

  • csvFilePath 作为参数传递给make_json 但它在哪里初始化?

标签: python json csv


【解决方案1】:

以下是正确的代码,但我建议您学习使用 python 调试器,以便下次解决代码中的任何逻辑缺陷。可以在此处找到有关 python 调试器的文档:

https://docs.python.org/3/library/pdb.html

您的代码的结构意味着对于每个 csv 文件,您在尝试打开它之前不会设置文件名。您看到的直接错误是因为您在定义 csvFile 和 jsonFile 的值之前尝试调用 make_json()。

我建议将代码更改为:

import csv
import json
import glob

def make_json(csvList):
    for csvFile in csvList:
        data = {}
        with open(csvFile, encoding='utf-8') as csvf:
            csvReader = csv.DictReader(csvf)
            for rows in csvReader:
                key = rows['id']
                data[key] = rows
        jsonFile =f"{csvFile.split('.')[-2]}.json"
        with open(jsonFile, 'w', encoding='utf-8') as jsonf:
            jsonf.write(json.dumps(data, indent=4))

make_json(glob.glob('*.csv'))

【讨论】:

    【解决方案2】:

    你应该试试这个

    import csv, json, os, glob
    
    os.chdir(r'C:\Users\user\Desktop\test' )
    result = glob.glob( '*.csv' )
    print(result)
    
    def make_json(): 
        for i in result:
            with open(i, encoding='utf-8') as csvf: 
                data = [row for row in csv.DictReader(csvf)]
                
            with open(f"{i.split('.')[-2]}.json", 'w', encoding='utf-8') as jsonf: 
                json.dump(data, jsonf)
    
    make_json()
    

    【讨论】:

      【解决方案3】:

      你没有初始化 make_json() 的两个参数 - (csvFilePath & jsonFilePath)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-26
        • 1970-01-01
        • 1970-01-01
        • 2014-01-23
        • 2013-08-06
        相关资源
        最近更新 更多