You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:50:27