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

如何判断文件行与指定字符串是否相等?Python代码异常排查求助

问题分析与解决

核心问题1:读取的行包含换行符,导致匹配失败

你的dict_check方法用readlines()读取文件时,每一行末尾会自带换行符\n(文件最后一行可能例外),而你传入的password是不带换行符的字符串,两者永远无法匹配,导致dict_check始终返回False。

比如dict.txt里有一行123456,实际读取到的内容是123456\n,和你传入的password="123456"比较时,"123456\n" == "123456"结果为False。

核心问题2:逻辑可能与需求相反

从代码逻辑看,你在setter中写的if not User.dict_check(value): raise ValueError,意思是只要密码不在字典里就抛出异常,这和常规的“禁止使用字典中的弱密码”逻辑完全相反。如果你的需求是避免弱密码,逻辑需要调整。

修复方案

步骤1:修正dict_check方法,去除换行符

修改方法,用strip()移除每行的换行符和首尾空白,避免格式差异导致匹配失败:

@staticmethod       
def dict_check(password):
    with open('dict.txt', 'r') as f:
        for line in f:
            if line.strip() == password:
                return True
        return False

注:直接迭代文件对象比readlines()更高效,无需一次性读取所有内容到内存。

步骤2:修正setter的逻辑(若需求是禁止弱密码)

如果你的目的是不允许使用字典中的弱密码,将setter中的判断改为:

if User.dict_check(value):
    raise ValueError("该密码属于弱密码,禁止使用")
self.__password = value

验证测试

  1. 在dict.txt中写入测试用弱密码:
123456
admin
password
  1. 尝试设置密码为"123456",此时应触发异常;设置密码为"MyStrongPass123",则正常完成赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:05:06