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

密码管理器代码读取TXT文件时信息匹配错误,请求协助排查

问题分析与修复方案

你的代码存在几个核心逻辑错误,导致查询结果不符合预期:

  1. 未按行区分独立账户:你将整个文件内容一次性用|分割成大列表,把不同账户的字段混在一起,索引完全混乱。
  2. 索引匹配错误:entries.index(entry)会返回列表中第一个匹配entry的位置,而非当前遍历到的项,所以永远只会拿到第一个网站对应的信息。
  3. 全局匹配逻辑不可靠:直接判断website in passwords会导致只要文件中存在包含该字符串的内容就触发后续逻辑,比如输入"sn"会匹配到"snsn"的账户,存在误判。

修复后的代码

def view_passwords():
    try:
        website = simpledialog.askstring("Enter Website", "Enter the website for the account:")
        if not website:  # 处理用户取消输入的情况
            return
            
        with open(passwordsfile, 'r') as f:
            found = False
            # 按行读取,每行对应一个独立账户
            for line in f:
                line = line.strip()
                if not line:
                    continue  # 跳过空行
                    
                # 分割当前行的三个字段
                parts = [part.strip() for part in line.split("|")]
                # 提取每个字段的内容
                username = ""
                password = ""
                current_website = ""
                for part in parts:
                    if part.startswith("Username:"):
                        username = part.replace("Username:", "").strip()
                    elif part.startswith("Password:"):
                        password = part.replace("Password:", "").strip()
                    elif part.startswith("Website or app:"):
                        current_website = part.replace("Website or app:", "").strip()
                
                # 匹配目标网站(忽略大小写提升用户体验)
                if current_website.lower() == website.lower():
                    messagebox.showinfo("Account Info", f"Website: {current_website}\nUsername: {username}\nPassword: {password}")
                    found = True
                    break
            
            if not found:
                messagebox.showinfo("No Account", f"No account found for {website}.")
    except FileNotFoundError:
        messagebox.showinfo("No Passwords", "No passwords found.")

关键改进点

  • 按行处理账户:每行对应一个独立账户,避免不同账户的字段互相干扰。
  • 精准提取字段:对每个字段单独解析,不依赖固定索引顺序(即使字段顺序变化也能兼容)。
  • 可靠的匹配逻辑:针对每个账户的网站字段精准匹配,还加入了大小写忽略的处理,提升用户体验。
  • 增加边界处理:处理用户取消输入、空行等异常情况,让程序更健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 10:15:18