Python中更新后的Dictionary无法永久保存如何解决?
解决Python用户验证程序数据持久化问题
你遇到的问题本质是数据只存在内存中——程序运行时,字典里的内容临时存放在内存里,一旦程序关闭,内存被释放,新增的数据自然就丢失了。要让用户数据永久保存,必须把数据写到磁盘文件里,这里推荐用JSON格式存储,它和Python字典结构高度匹配,读写操作简单。
修改后的完整代码
import getpass import json import os # 定义存储用户数据的JSON文件路径 DATA_FILE = "user_database.json" # 加载已有用户数据:文件存在就读取,不存在则用初始账号 def load_database(): if os.path.exists(DATA_FILE): with open(DATA_FILE, "r") as f: return json.load(f) else: return {"user1": "123476", "user2": "654321"} # 将更新后的用户数据写入文件 def save_database(db): with open(DATA_FILE, "w") as f: json.dump(db, f, indent=2) # 主程序逻辑 database = load_database() username = input("Enter Your Username : ") if username not in database: print("This Username is not found in our database, Please create one!") password1 = input("Enter Password: ") database[username] = password1 save_database(database) print("New user created successfully!") print("Current database:", database) # 用户验证环节 password = getpass.getpass("Enter Your Password : ") if username in database: while password != database[username]: password = getpass.getpass("Enter Your Password Again : ") print("Verification Successful.") else: print("Username not found!")
关键改动说明
- 新增
load_database函数:程序启动时自动读取JSON文件里的用户数据,文件不存在时才用初始的两组账号,保证每次启动都能加载之前保存的所有用户。 - 新增
save_database函数:每次创建新用户后,立刻把更新后的字典写入JSON文件,数据被持久化到磁盘,重启程序也不会丢失。 - 优化冗余操作:创建新用户时直接用第一次输入的用户名,不用让用户重复输入,提升使用体验。
- 简化验证逻辑:直接通过用户名索引字典获取密码,比遍历字典更高效。
内容的提问来源于stack exchange,提问作者Joshi Balaji Bheema
相关产品推荐
相关产品推荐

