gpt4 book ai didi

mysql - 我正在尝试解析本地磁盘上的 350 个文件并将数据作为 json 对象存储到数据库中

转载 作者:行者123 更新时间:2023-11-29 16:04:17 25 4
gpt4 key购买 nike

我正在使用 python 解析包含 json 数据的 350 个 txt 文件。我能够检索其中 62 个对象并将它们存储在 mysql 数据库中,但之后我收到一条错误消息 JSONDecodeError: ExtraData

Python:

import os
import ast
import json
import mysql.connector as mariadb
from mysql.connector.constants import ClientFlag

mariadb_connection = mariadb.connect(user='root', password='137800000', database='shaproject',client_flags=[ClientFlag.LOCAL_FILES])
cursor = mariadb_connection.cursor()

sql3 = """INSERT INTO shaproject.alttwo (alttwo_id,responses) VALUES """

os.chdir('F:/Code Blocks/SEM 2/DM/Project/350/For Merge Disqus')
current_list_dir=os.listdir()
print(current_list_dir)
cur_cwd=os.getcwd()
cur_cwd=cur_cwd.replace('\\','/')
twoid=1

for every_file in current_list_dir:
file=open(cur_cwd + "/" + every_file)
utffile=file.read()
data=json.loads(utffile)
for i in range(0,len(data['response'])):
data123 = json.dumps(data['response'][i])
tup=(twoid,data123)
print(sql3+str(tup))
twoid+=1
cursor.execute(sql3+str(tup)+";")
print(tup)
mariadb_connection.commit()

我在网上搜索了一下,发现多个dump语句导致了这个错误。但我无法解决它。

最佳答案

您想使用glob .

而不是过于宽松的os.listdir(),使用 glob 仅关注 *.json 文件。

在要求 .loads() 解析文件之前打印出文件名。将任何格式错误的文件重命名为 .txt 而不是 .json,以便跳过它们。

请注意,您可以将打开的文件直接传递给 .load() ,如果你愿意的话。

关闭打开的文件是一件好事。而不是直接赋值(没有 close()!)with 会更好:

with open(cur_cwd + "/" + every_file) as file:
data = json.load(file)

谈论当前当前工作目录似乎既重复又多余。称之为cwd就足够了。

关于mysql - 我正在尝试解析本地磁盘上的 350 个文件并将数据作为 json 对象存储到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55882972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com