登录程序仅读取文本文件的最后一行

问题描述 投票:0回答:2

作为我上一个问题的延续使用文本文件创建登录程序,我的程序正在尝试验证用户输入的用户名和密码,如果用户名和密码存在于 user.txt 中,则用户应该是能够访问菜单。问题是它只读取 user.txt 文件的最后一行,因此只允许最后注册的用户登录。我希望 user.txt 文件中的所有用户都能够登录。

这是我到目前为止所尝试过的

usernames = []
passwords = []

user_name = input("Please enter your username: ")
pass_word = input("Please enter your password: ")

with open("user.txt", "r+") as f1, open("tasks.txt", "r+") as f2:

    for lines in f1:
        logins = lines.strip()
        logins = lines.split(", ")
        username = logins[0]
        password = logins[1]
        usernames.append(logins[0])
        passwords.append(logins[1])

    while user_name == username and pass_word == password:
        menu = input('''Please select one of the following options:\n
        r - register a user 
        a - add task
        va - view all tasks
        vm - view my tasks
        e - exit ''').lower()

user.txt 文件的内容

admin, adm1n
Maverick, FlyGuy
python user-input
2个回答
0
投票

您没有使用

usernames
passwords
列表,因此仅针对最后一次迭代/行进行检查。如果(用户名、密码)成对存储,验证凭据也更容易,如下所示:

username_and_passwords = []

entered_username = input("Please enter your username: ")
entered_password = input("Please enter your password: ")

with open("user.txt", "r+") as f1, open("tasks.txt", "r+") as f2:

    for line in f1:
        username, password = line.strip().split(", ")
        username_and_passwords.append((username, password))

    while (entered_username, entered_password) in username_and_passwords:
        menu = input('''Please select one of the following options:\n
        r - register a user 
        a - add task
        va - view all tasks
        vm - view my tasks
        e - exit ''').lower()

-1
投票

试试这个代码

usernames = []
passwords = []

user_name = input("Please enter your username: ")
pass_word = input("Please enter your password: ")

with open("user.txt", "r+") as f1:

for lines in f1:
    logins = lines.strip('\n')
    logins = lines.split(", ")
    username = logins[0]
    password = logins[1].replace('\n','')
    usernames.append(username)
    passwords.append(password)
while user_name in usernames and pass_word in passwords:
    menu = input('''Please select one of the following options:\n
    r - register a user 
    a - add task
    va - view all tasks
    vm - view my tasks
    e - exit ''').lower()
© www.soinside.com 2019 - 2024. All rights reserved.