无法将输入变量与文件中的变量进行比较

sea*_*ean 5 python validation file python-3.x

我正在为我的项目创建一个登录系统,我将用户名和密码存储在一个文本文件中,第一列中包含用户名,第二列中包含密码,然后用新行分隔每个登录名/密码并使用:as作为用户名/密码之间的障碍.

输入正确的用户名和密码后,我总是得到不正确的登录信息,但是如果我只是将用户名与文件进行比较,它就能正常运行.即使我直接从文件中打印密码和用户名,然后将其打印在我输入的用户名/密码旁边,它仍然完全相同,但仍然说不正确的登录!

def login():
file=open("user.txt","r")
user=input("enter usename")
password=input("enter password") 
Check=False
for line in file:
    correct=line.split(":")
    if user==correct[0] and password==correct[1]:
        Check=True
        break
if Check==True:
    print("succesffuly logged in")
    file.close()
    mainMenu()
else:
    print("incorrect log in")
    file.close()
    login()
Run Code Online (Sandbox Code Playgroud)

Dri*_*ise 5

我怀疑你\n在每个用户/密码字符串的末尾都有一个.我怀疑在被读入之后line看起来像user:pass\n.line.strip().split(':')用于删除导致password==correct[1]失败的换行符.

更换:

for line in file:
    correct=line.split(":")
Run Code Online (Sandbox Code Playgroud)

附:

for line in file:
    correct=line.strip().split(":")
Run Code Online (Sandbox Code Playgroud)

为什么,请参阅https://docs.python.org/2/library/string.html#string.strip

string.strip(s[, chars])

返回删除了前导和尾随字符的字符串副本.如果chars省略或None删除空格字符.如果给定而不是None,则chars必须是字符串; 字符串中的字符将从调用此方法的字符串的两端剥离.