Python 无法将JSON文件作为字典加载
我在VisualStudio代码中创建了一个登录系统,用户可以在其中创建一个新帐户。该信息应以Dict格式存储在JSON文件中,用户名为密钥,密码为值。到目前为止,除了带有dict的JSON文件不会在Python中加载之外,所有的东西都能正常工作,我不知道为什么Python 无法将JSON文件作为字典加载,python,json,Python,Json,我在VisualStudio代码中创建了一个登录系统,用户可以在其中创建一个新帐户。该信息应以Dict格式存储在JSON文件中,用户名为密钥,密码为值。到目前为止,除了带有dict的JSON文件不会在Python中加载之外,所有的东西都能正常工作,我不知道为什么 import json status = "" def displayMenu(): loadFile() print(users.keys()) saveFile() status = input(
import json
status = ""
def displayMenu():
loadFile()
print(users.keys())
saveFile()
status = input("Are you registered user? y/n? Press q to quit")
if status == "y":
oldUser()
elif status == "n":
newUser()
def newUser():
createLogin = input("Create login name: ")
if createLogin in users:
print("\nLogin name already exist!\n")
else:
createPassw = input("Create password: ")
users[createLogin] = createPassw
print("\nUser created\n")
def oldUser():
login = input("Enter login name: ")
passw = input("Enter password: ")
if login in users and users[login] == passw:
print("\nLogin successful!\n")
else:
print("\nUser doesn't exist or wrong password!\n")
def saveFile():
with open('personal.json', 'a') as json_file:
json.dump(users, json_file)
def loadFile():
with open('personal.json', 'r') as json_file:
users = json.load(json_file)
while status != "q":
displayMenu()
这通常是使用数据库完成的。但是,如果您使用一个存储字典的
JSON
表示的文件来执行此操作,那么有三件事。(1) 您必须防止两个单独的进程同时写入文件,因此请查看saveFile
函数的文件锁定,例如PyPI
存储库中的packagefilelock
。(2) 您不希望使用标志a
打开输出文件,而是使用标志“w”替换原始内容,也就是说,您不希望使用多个背对背的词典,这就是您所得到的。(3) 密码应该加密。我的第一条评论中的第2点(我超出了评论的大小限制)可能是导致错误的原因。这通常是使用数据库完成的。但是,如果您使用一个存储字典的JSON
表示的文件来执行此操作,那么有三件事。(1) 您必须防止两个单独的进程同时写入文件,因此请查看saveFile
函数的文件锁定,例如PyPI
存储库中的packagefilelock
。(2) 您不希望使用标志a
打开输出文件,而是使用标志“w”替换原始内容,也就是说,您不希望使用多个背对背的词典,这就是您所得到的。(3) 密码应该加密。我的第一条评论中的第2点(我超出了评论的大小限制)可能是导致您出错的原因。