#问题背景
自学Python两星期,学到json模块,心血来潮想做一个能够存储账号密码的程序,前面正常,但写到最后,不知道怎么读取存储在json文件中的字典信息,因此一直报错。
#版本环境
版本:Python3.10
环境:Windows10
#期望结果
存储用户输入的信息,包含账号密码和安全问题(作为两组字典存储在新创建的json文件中),然后弹出安全问题,将用户输入的答案同文件中存储的信息对比,回答正确则输出账号与密码,反之输出“回答错误”。
#代码
import json
q1 = input('请输入你的账号:\n')
q2 = input('请输入你的密码:\n')
key_data = {'account': q1, 'key': q2}
with open('user_data.json', 'w', encoding='utf_8') as f:
json.dump(key_data, f)
print(f"你的账号已经存储完毕。接下来请设置安全问题:\n")
answer1 = input('你的生日?\n')
answer2 = input('你的姓名?\n')
question = {'birthday': answer1, 'full_name': answer2}
with open('user_data.json', 'a', encoding='utf_8') as ff:
json.dump(question, ff)
print(f"安全问题设置完毕。此后完成安全问题的回答即可获取账号与密码。\n")
active1 = input('访问账号密码请输入以下安全问题:\n你的生日?\n')
with open('user_data.json', 'r', encoding='utf_8') as fff:
call = json.load(fff)
if active1 == call['birthday']:
active2 = input('回答正确。进入下个问题:你的姓名?\n')
if active2 == call['full_name']:
print('全部回答正确。现在你可以获取你的账号密码了。\n')
print(call[key_data])
else:
print('回答错误。')
else:
print('回答错误。')
#报错描述
Traceback (most recent call last):
File "C:\Users\11479\AppData\Roaming\JetBrains\PyCharmCE2022.2\scratches\scratch_5.py", line 20, in <module>
call = json.load(fff)
File "D:\Python\lib\json\__init__.py", line 293, in load
return loads(fp.read(),
File "D:\Python\lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "D:\Python\lib\json\decoder.py", line 340, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 33 (char 32)