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)
答案 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/