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

Python读取user.txt做登录验证时原有admin账户失效问题求助

问题排查

  • 凭证循环逻辑错误:for lines in text遍历所有用户行时会持续覆盖valid_user和valid_password变量,循环结束后仅保留文件最后一行的用户凭证,因此只有最后注册的新用户可正常登录,之前写入的管理员账号永远无法匹配。
  • 空白字符处理错误:valid_user, valid_password.strip()属于无效写法,strip()会返回新的处理后字符串,不会修改原变量,行尾的换行符等空白字符会保留,导致凭证匹配失败。
  • 校验逻辑位置错误:账号密码比对逻辑写在for循环外部,仅会和最后一个用户做校验;同时错误提示的判断条件有误,只要和最后一个用户不匹配就输出错误,不符合预期。
  • 冗余代码:登录逻辑没有修改user.txt的操作,user_file.seek(0)为无效冗余代码。

修复方案

优化后代码

from datetime import datetime
import csv

# 提前读取所有用户凭证,用with语法自动管理文件生命周期,无需手动关闭
with open("user.txt", "r", encoding="utf-8") as user_file:
    user_lines = user_file.readlines()

login = False

while not login:
    username = input("Enter your username: ").strip()
    password = input("Enter your password: ").strip()
    # 遍历所有用户逐一匹配
    for line in user_lines:
        # 跳过空行避免拆分报错
        line = line.strip()
        if not line:
            continue
        valid_user, valid_pwd = line.split(", ")
        valid_user = valid_user.strip()
        valid_pwd = valid_pwd.strip()
        if valid_user == username and valid_pwd == password:
            login = True
            print("Logging in...")
            # 匹配到就终止循环,无需继续遍历
            break
    # 全部遍历完仍未匹配到,输出错误提示
    if not login:
        print("Invalid login details")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:27:05