JSON文件无法读取

时间:2018-10-11 13:04:30

标签: python json

import json
import io

username = input('Enter your username ') #Input
password = input('Now enter your password ') #Input

usernamelow = username.lower() 

用户名输入转换为小写

auth = {
    "users": usernamelow,
    "pass": password
    }

写入JSON文件的JSON字符串

dump = json.dumps(auth) #Gathers data
print (dump) #Debug print
with open('auth.json', 'a') as outfile:
    for line in outfile:
        json.dump(auth, outfile, indent=4)

(转储AUTH) 将数据添加到JSON文件^

with open('auth.json', 'r') as f:
    data = json.load(f)

基本上,这是我正在研究的一个学校项目,当我不止一次将文件追加到文件后,会给我带来额外的数据错误。这是运行脚本时出现的JSON:

{
    "pass": "testpass", 
    "users": "testuser"
}{
    "users": "testinguser", 
    "pass": "testingpass"
}

我似乎收到此错误:

  

ValueError:额外数据:第4行第2列-第7行第2列(字符52-   110)

2 个答案:

答案 0 :(得分:1)

好的,以下错误告诉我们一些信息:-

ValueError: Extra data

您尝试加载的数据未使用JSON正确格式化。正确的JSON格式为:-

[{
    "pass": "testpass", 
    "users": "testuser"
}, {
    "users": "testinguser", 
    "pass": "testingpass"
}]

更好的做法是将所有数据一次输入到字典列表中,然后可以将其作为一个整体转储到文件中:-

with open('auth.json', 'a') as outfile:
    json.dump(auth_list, outfile, indent=4)

答案 1 :(得分:0)

错误可能是条目之间缺少逗号

另一种方法是,首先从文件列表(词典)中收集文件中所有现有的数据,然后附加新的输入。这对于检查重复项可能很有用

import json
import os

auth_list = []
file_name = 'auth.json'

if os.path.isfile(file_name):
    with open(file_name, 'r') as f:
        auth_list = json.load(f)

print(auth_list)

username = input('Enter your username ')
password = input('Now enter your password ')

usernamelow = username.lower()

auth = {
   "users": usernamelow,
   "pass": password
}
auth_list.append(auth)

with open(file_name, 'w') as outfile:
    json.dump(auth_list, outfile)

这可能也是有用的资源https://realpython.com/python-json/

相关问题