【发布时间】:2017-01-28 05:18:00
【问题描述】:
所以我正在做一个基本的临时登录验证,只有一个基本的文本文件来“假装”,而应该返回 True 的不是。用户名检查有效,但密码检查无效
@staticmethod
def validate_login(filename,username,password):
file = open(filename,'r')
file.readline()
for line in file:
i = [i for i, char in enumerate(line) if char == '|']
print username == line[i[0] + 2:i[1]-1]
print password == line[i[1] + 2:]
print password
print line[i[1] + 2:]
if username == line[i[0] + 2:i[1]-1] and password == line[i[1] + 2:]:
file.close()
print "Login Successful."
return True
file.close()
print "Failed to login. Invalid username or password."
return False
这是输出结果。密码与文本文件完全匹配,但返回 false。用户名返回 true。到底是什么问题?快把我逼疯了。
True <--- username matched correctly returns true
False <---passwords apparently don't match, returns false.
DopeFiend97 <--password
DopeFiend97
【问题讨论】:
-
您的密码比较中可能有一个换行符
\n。您需要strip()关闭它。任何不使用split的理由,例如u, p = line.strip().split('|'); if username == u and password == p): ... -
修复它,必须使用 line.strip()
标签: python string comparison