Python 3.x 从python中的文本文件登录

Python 3.x 从python中的文本文件登录,python-3.x,Python 3.x,我正在尝试用python创建一个用户登录。创建一个帐户是可行的,但当试图成为一个现有用户时,它就不起作用了。 这是该部分的代码: elif login == "existing": un = input("Username: ") pw = input("Password: ") f = file = open(un + ".txt", "r") if(file.readline())== ('Username: ' + un):

我正在尝试用python创建一个用户登录。创建一个帐户是可行的,但当试图成为一个现有用户时,它就不起作用了。 这是该部分的代码:

elif login == "existing":
        un = input("Username: ")
        pw = input("Password: ") 
        f = file = open(un + ".txt", "r")
        if(file.readline())== ('Username: ' + un):
            print("Welcome")
        elif(file.readline())!= ("Password: ",pw): 
            print("Incorrect username or password.")
            un = input("Username:") 
            pw = input("Password:") 
            text_file = open(un + ".txt", "r")
            un = input("Username:") 
            pw = input("Password:")
            f = file = open(un +".txt", "r")
            print('Incorrect, closing the program.')
            Menuv2.close()
        else:
            print('Invalid input.')
            'Menuv2.py'.close()

即使用户名和密码正确,它也不会打印welcome。有什么想法吗?

问题似乎存在于代码的以下行:

if(file.readline())== ('Username: ' + un):
if
条件检查输入的用户名是否等于
“username:inputed\u user\u name”
。下一行的
input()
函数:

un = input("Username: ")
不将输入的用户名附加到
用户名:
。这仅用于通知用户他/她正在输入的内容,因此您应该将
if
条件更改为:

if file.readline() == un:

这里的逻辑有点缺陷,好像用户名是正确的,密码永远不会被检查。但是,直接错误是
readline()
将包含换行符。您可以使用
file.readline().strip()
将其删除

发件人:

f、 readline()从文件中读取一行;换行符(\n)保留在字符串的末尾,如果文件不是以换行符结尾,则仅在文件的最后一行省略

此外,由于问题中的文件格式未知,因此很难判断您是应该与
“Username:…”
进行比较,还是只与输入的数据进行比较。当前,文件的内容必须是:

Username: myusername
Password: mypassword
如果不打算这样做,您需要将比较更改为:

if file.readline().strip() == un:

您是否尝试打印if的两个部分以查看不同之处?顺便说一句,您使用了很多不必要的参数,这应该可以使用:
file.readline()='Username:'+un
它之所以等于“Username:inputed\u user\u name”是因为文本文件中就是这样的。