如何检查文件中某一行的第二个列表元素是否包含"x"?

Zan*_*sal 0 python if-statement python-2.7

我要做的是创建一个登录系统.
我问用户一个用户名,如果该用户名在文件中,我想要一个密码.
但我不知道如何检查用户名和密码是否匹配.

具有用户名的文件格式如下:

Username1 Password
Username2 Password
Run Code Online (Sandbox Code Playgroud)

我的代码是:

def login():
    users = open('passwords.txt', 'r').readlines()
    while x == 1:
        usernames = [i.split()[0] for i in users]
        username = raw_input("> ")
        if username.lower() in usernames:
            password = raw_input("> ")


        else:
            print 'That username is not in use.'
Run Code Online (Sandbox Code Playgroud)

所以问题是,我如何检查IE:密码是否与Username1匹配
我知道我无法循环,文件中的每个密码都是这样的:

passwords = [i.split()[1] for i in users]
Run Code Online (Sandbox Code Playgroud)

因为,它会接受文件中的每个密码,而不是仅匹配的密码.

fre*_*ini 5

您可以使用词典来存储每个用户的密码:

dictPass = {i.split()[0]:i.split()[1] for i in users}
Run Code Online (Sandbox Code Playgroud)

然后,您可以检查用户是否存在

if username.lower() in d:
Run Code Online (Sandbox Code Playgroud)

和验证密码

if password == d[username.lower()]:
Run Code Online (Sandbox Code Playgroud)

要么

if password == d.get(username.lower()):
Run Code Online (Sandbox Code Playgroud)

另一种方法是找到用户的索引:

whichUser = usernames.index(username.lower())
Run Code Online (Sandbox Code Playgroud)

然后,使用passwords = [i.split()[1] for i in users]您可以获得密码:

realPassword = passwords[whichUser]
Run Code Online (Sandbox Code Playgroud)