如何在python中正确循环一个文本文件以获取用户名/pw进行登录?

如何在python中正确循环一个文本文件以获取用户名/pw进行登录?,python,file,authentication,tkinter,Python,File,Authentication,Tkinter,嘿,我在检查用户名是否在数据库中时遇到问题。如果用户名现在在数据库中,获取用户名可以正常工作,但是我如何检查它是否不在数据库中?我所得到的东西在循环中循环并每次调用invalid\u details() 代码: 如果不知道invalid_details()的作用,我不确定这正是您想要的,但您已经明白了 if username.get() == "" or password.get() == "": invalid_details() return False for line

嘿,我在检查用户名是否在数据库中时遇到问题。如果用户名现在在数据库中,获取用户名可以正常工作,但是我如何检查它是否不在数据库中?我所得到的东西在循环中循环并每次调用
invalid\u details()

代码:


如果不知道
invalid_details()
的作用,我不确定这正是您想要的,但您已经明白了

if username.get() == "" or password.get() == "":
    invalid_details()
    return False

for line in open(file_name, "r").readlines():
    login_info = line.strip().split(".")
    if username.get() == login_info[0]:
        if password.get() == login_info[1]:
            print(login_info[0])
            print(login_info[1])
            print(login_info[2])
            print(login_info[3])
            print(login_info[4])
            return True

        invalid_details()
        print("wrong password")
        return False

    # If username did not match, continue to the next line.

# All lines were checked and the username did not match.
invalid_details()
print("username not found")
return False

用户名/密码文件的具体布局如何?@DanielLavedoniodeLima username.password.name.name.email
def add_account():new_password_info=new_password.get()new_username_info=new_username.get()new_name=first_name.get()new_姓氏=姓氏。get()new_email=email_address.get()#将新的详细信息写入file file=open(file_name,“a”)文件。写入(new_username_info+“+”+new_password_info+“+”+new_name+“+new_姓氏+”+new_email+“\n”)文件。关闭()
您的逻辑有点错误<第行中的code>username.get()不能唯一标识一行。仅将用户名与用户名字段进行比较(
登录信息[0]
)。如果用户名不匹配,这并不意味着
无效的\u详细信息()。相反,您应该在循环结束(没有找到匹配项)后转到下一行并调用
invalid_details()
。@hmm非常感谢@KevinNisbet请用适当的缩进编辑原始帖子中的代码,并在必要时更新问题。在注释中读取代码块非常困难。
if username.get() == "" or password.get() == "":
    invalid_details()
    return False

for line in open(file_name, "r").readlines():
    login_info = line.strip().split(".")
    if username.get() == login_info[0]:
        if password.get() == login_info[1]:
            print(login_info[0])
            print(login_info[1])
            print(login_info[2])
            print(login_info[3])
            print(login_info[4])
            return True

        invalid_details()
        print("wrong password")
        return False

    # If username did not match, continue to the next line.

# All lines were checked and the username did not match.
invalid_details()
print("username not found")
return False