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

基于.txt文件与字典的Python用户登录代码问题排查及优化

问题排查与代码优化

原代码核心问题

  • 异常捕获范围错误:文件打开操作在try块外,导致文件找不到的异常无法被捕获,需将with open移入try块内。
  • 欢迎信息语法错误:print(f"Welcome", {username})写法错误,多余的大括号会导致输出格式混乱。
  • 程序无法终止:quit是内置函数,必须以quit()形式调用才会终止程序,原代码仅引用函数名不会执行。
  • 错误处理过于宽泛:直接捕获Exception会掩盖文件行格式错误等潜在问题,应细分捕获特定异常。
  • 冗余变量:users = user_log未被使用,属于无效代码。

修复优化后的代码

user_key = {}
try:
    with open("user.txt", "r") as user_log:
        for line in user_log:
            # 跳过空行
            line = line.strip()
            if not line:
                continue
            # 处理单行格式错误
            try:
                # 限制仅拆分一次,支持密码含逗号的场景
                key, value = line.split(',', 1)
                user_key[key.strip()] = value.strip()
            except ValueError:
                print(f"警告:文件中行「{line}」格式错误,已跳过")
except FileNotFoundError:
    print("错误:未找到user.txt文件")
    quit()

# 循环支持多次重试
while True:
    username = input("请输入用户名: ").strip()
    if username not in user_key:
        print("无效的用户名,请重新输入。")
        continue
    
    password = input("请输入密码: ").strip()
    if password == user_key[username]:
        print(f"欢迎您,{username}!")
        break
    else:
        print("用户名或密码错误,请重新输入。")

优化说明

  • 调整异常捕获逻辑,精准处理文件不存在和行格式错误的情况,避免程序直接崩溃。
  • 添加循环重试机制,用户输入错误后可重新尝试,无需重启程序。
  • 处理输入内容的首尾空格,避免因用户误输入空格导致的校验失败。
  • 限制拆分次数,支持密码中包含逗号的场景。
  • 移除冗余变量,简化代码结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:35:09