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

Python登录系统读取accounts.txt报错:ValueError解包值过多

解决登录函数的解包错误

错误原因

你触发的ValueError是因为f.read().split("\n")分割后得到的元素数量不等于2,没法直接赋值给stored_Username和stored_pwd两个变量。大概率是多次注册后文件里有多行账号数据,或者文件存在空行,导致分割后的列表长度超过预期。

修复步骤

  • 修正注册函数的写入格式
    每次注册的用户名和加密密码要放在同一行,用分隔符(比如逗号)隔开,一行存储一个账号,避免数据混乱:

    import hashlib
    
    def signup(username, password):
        # MD5加密密码
        md5_pwd = hashlib.md5(password.encode()).hexdigest()
        # 一行存储一个账号,用逗号分隔用户名和密码
        with open("accounts.txt", "a", encoding="utf-8") as f:
            f.write(f"{username},{md5_pwd}\n")
    
  • 修正登录函数的读取逻辑
    登录时要逐行遍历文件内容,匹配输入的用户名,而不是直接拆分整个文件内容:

    import hashlib
    
    def login(username, password):
        md5_pwd = hashlib.md5(password.encode()).hexdigest()
        with open("accounts.txt", "r", encoding="utf-8") as f:
            for line in f:
                line = line.strip()  # 去除换行符和前后空白
                if not line:  # 跳过空行
                    continue
                # 按逗号拆分当前行的用户名和密码
                stored_username, stored_pwd = line.split(",")
                if stored_username == username and stored_pwd == md5_pwd:
                    print("登录成功")
                    return True
            print("用户名或密码错误")
            return False
    
  • 清理已有错误格式的文件
    如果你的accounts.txt已经有混乱的内容,直接删除文件重新生成,或者手动把每行改成用户名,加密密码的格式。

内容的提问来源于stack exchange,提问作者1Exromoschrome

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 02:22:16