从文本fi逐行读取

2024-06-06 10:20:53 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Ryan#Male#Ryan123#Ryan321#
Lina#Female#Lina123#Lina321#

顺序是Name#Gender#username#password。在

^{pr2}$

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

Ryan123
Lina123

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

我是说,先检查这一行:

Ryan#Male#Ryan123#Ryan321#

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


Tags: name顺序usernamepasswordgendermalefemale文本文件
3条回答

这里需要一个“and”条件,因为密码和用户名应该匹配!在

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将在您标识用户后“杀死”您的循环。程序也可以在没有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'

顺便说一句,在Python中,pass是一个关键字,所以最好使用其他方法作为变量名。在

您正在检查可能位于两行不同行的两个不同字段(例如,用户与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!"

相关问题 更多 >