Python 从文本文件逐行读取

Python 从文本文件逐行读取,python,Python,我有一个包含以下内容的文本文件: Ryan#Male#Ryan123#Ryan321# Lina#Female#Lina123#Lina321# 顺序为NameGenderusernamepassword 这是可行的,但是,当我试图打印登录名[2]时,它返回了 Ryan123 Lina123 当我使用Ryan作为用户名时,我仍然可以使用Lina的密码登录。如何让它每行检查.txt文件中的内容 我的意思是,首先检查这一行: Ryan#Male#Ryan123#Ryan321# 当找不到登录信

我有一个包含以下内容的文本文件:

Ryan#Male#Ryan123#Ryan321#
Lina#Female#Lina123#Lina321#
顺序为NameGenderusernamepassword

这是可行的,但是,当我试图打印登录名[2]时,它返回了

Ryan123
Lina123
当我使用Ryan作为用户名时,我仍然可以使用Lina的密码登录。如何让它每行检查.txt文件中的内容

我的意思是,首先检查这一行:

Ryan#Male#Ryan123#Ryan321#

当找不到登录信息时,它将进入下一行。

您需要一个和条件,因为密码和用户名应该匹配

he_is_cool = False
for login in file:
     login = login .split('#')
     if user == login [2] and pass== login [3]:
         he_is_cool = True
         break

file.close()

if he_is_cool:
     //go to next page
else:
     print "wrong username or password!"

请注意,当您识别了用户后,break将终止您的循环。程序也将不间断地工作。

您需要一个和条件,因为密码和用户名应该匹配

he_is_cool = False
for login in file:
     login = login .split('#')
     if user == login [2] and pass== login [3]:
         he_is_cool = True
         break

file.close()

if he_is_cool:
     //go to next page
else:
     print "wrong username or password!"

请注意,当您识别了用户后,break将终止您的循环。程序也可以不间断地工作。

密码问题是因为您从未在行之间重置计数器。但在不计算条件的情况下,它可以做得更简单:

file = open("user.txt", "r")
for login in file:
    login = login.split('#')
    if user == login[2] and password == login[3]:
        print 'Correct username/password'
        break
else:
    print 'Invalid username/password'

顺便说一句,pass在Python中是一个关键字,因此最好在变量名中使用其他名称。

密码问题是因为您从未在行之间重置计数器。但在不计算条件的情况下,它可以做得更简单:

file = open("user.txt", "r")
for login in file:
    login = login.split('#')
    if user == login[2] and password == login[3]:
        print 'Correct username/password'
        break
else:
    print 'Invalid username/password'

顺便说一下,pass在Python中是一个关键字,因此最好在变量名中使用其他名称。

您正在检查两个不同的字段,可能位于两行不同的位置,例如,用户匹配Ryan,密码匹配Lina

通常,对于单个给定用户,用户和密码都必须匹配

因此,您可以摆脱计数器并尝试使用

pwd = password.get()
with open("user.txt", "r") as file:
    for login in file:
        login = login .split('#')
        if user == login[2] and pwd == login[3]:
            pass # go to next page, substitute pass on this line!
    else:
        print "wrong username and password!"

您正在检查可能位于两行的两个不同字段,例如,用户与Ryan匹配,密码与Lina匹配

通常,对于单个给定用户,用户和密码都必须匹配

因此,您可以摆脱计数器并尝试使用

pwd = password.get()
with open("user.txt", "r") as file:
    for login in file:
        login = login .split('#')
        if user == login[2] and pwd == login[3]:
            pass # go to next page, substitute pass on this line!
    else:
        print "wrong username and password!"

可能不相关:您的缩进在for循环中是错误的,kick login=login。通过一个选项卡拆分,您正在检查可能位于两行上的两个不同字段,例如,用户匹配Ryan,密码匹配Lina。通常情况下,对于单个给定用户,用户和密码都必须匹配小心,pass是python关键字。我不建议以明文形式存储用户名和密码。可能不相关:for循环中的缩进错误,kick login=login。按一个选项卡拆分,您正在检查可能位于两行的两个不同字段,例如,用户与Ryan匹配,密码与Lina匹配。通常情况下,对于单个给定用户,用户和密码都必须匹配。请小心,pass是python关键字。我不建议以明文形式存储用户名和密码。我相信您想要的是break,而不是pass。编辑:我理解你为什么现在使用pass。尽管如此,我还是建议您打破循环,让文件在重定向到新页面之前正确关闭。此外,您的注释语法错误。Python用于单行注释。@pzp不,对不起。我在注释后使用pass,我的意思是用代码替换直接进入下一页。现在编辑得更好了。谢谢你,我相信你想要的是休息,而不是传球。编辑:我理解你为什么现在使用pass。尽管如此,我还是建议您打破循环,让文件在重定向到新页面之前正确关闭。此外,您的注释语法错误。Python用于单行注释。@pzp不,对不起。我在注释后使用pass,我的意思是用代码替换直接进入下一页。现在编辑得更好了。谢谢是的,我刚把通行证换成了别的。这很容易理解,而且非常有效。谢谢是的,我刚把通行证换成别的。这很容易理解,而且非常有效。谢谢