尝试将用户输入与文本文件数据进行比较,但在文本文件中找不到用户输入

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

目前正在编写一个程序,用户可以使用帐户用户名和密码登录。用户输入的用户名和密码将写入字典 (account_login),然后将其与文本文件中的用户名和密码进行比较。 这是问题所在的代码:

def login_fn():
    print("Please enter your account details below.")
    current_usrname = input("Username: >")
    current_pswrd = input("Password: >")
    account_login.update({current_usrname:current_pswrd})
    with open('accounts.txt', 'r') as file:
        file.readlines()
        if account_login in file:
            print("logged in!")
        else:
            print("invalid!")

以下是文本文件,仅供参考:

fredsmart1,1234567890
jrobertson4,r@=%8(_W=1
bob101,1234598abc
marcusw,3#tr@9dw%4
popeyedd,1989eidjce
junkman00,p3*(kd8&ld
sbj2021,$d5e(ep2(de4ab3
robotman,7777Spy007

我的问题是,它不断返回说找不到用户输入的用户名和密码,即使它位于文本文件中。 例如,我会输入 Robotman 帐户,它将返回字符串“无效!”这意味着它在文本文件中找不到该帐户。 我试图让它返回“已登录!”这意味着它找到了该帐户。

对 python 来说还是很陌生,非常感谢任何帮助! 谢谢!

python
1个回答
0
投票

问题在于如何将

account_login
字典与文件内容进行比较。您当前正在从文件中读取所有行,但实际上并未正确地将输入与每行进行比较。 你应该:

  1. 逐行阅读全文
  2. 用逗号分隔每一行以分隔密码和用户名
  3. 将用户输入与这些值进行比较
def login_fn():
    print("Please enter your account details below.")
    current_usrname = input("Username: >")
    current_pswrd = input("Password: >")
    with open('accounts.txt','r') as file:
        for line in file:
            stored_usrname, stored_pswrd = line.strip().split(',')
            if current_usrname == stored_usrname and current_pswrd == stored_pswrd:
                print("logged in!")
                return
    print("invalid!")
© www.soinside.com 2019 - 2024. All rights reserved.