如何知道何时到达文本文件的底部

时间:2017-10-15 11:00:27

标签: python text-files

所以我有一个文本文件,其中包含我的程序用户的详细信息。

在我的程序中,我有一个登录系统,可以从这个文本文件中检索数据,但是当我到达它结束时我不知道如何分辨。

来自文本文件的数据样本如下所示:

  鲍勃,Bob15,足球,15

我的代码如下:

username = input("Enter username: ")
password = input("Enter password: ")

file = open("userDetails.txt", "r")
match = False
while match == False:
    finished = False
    while finished == False:
        for each in file:
            each = each.split(", ")
            realUser = each[1]
            realPass = each[2]
            if realUser == username and realPass == password:
                match = True
                finished = True
                print("match")
            elif each == "":
                finished = False
                username = input("Re-enter username: ")
                password = input("Re-enter password: ")
                match = False
            else:
                finished = False

我不确定的部分是elif each == "":部分。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

鉴于这个问题,我相信在这里使用for-else条款是理想的 注意:当循环正常退出时,执行else循环的for子句,即不会遇到break语句。

<强>算法
 1.询问用户输入
 2.首先将标记match设置为False  3.在文件中搜索,直到找到匹配项为止  4.使用上下文管理器打开文件;确保文件在操作后关闭  5.找到匹配后,在将标记match设置为True的同时,立即退出文件循环。
 6.如果未找到匹配项,请要求用户重新输入凭据并再次执行搜索操作  7.继续,直到找到匹配。

<强> CODE

username = input("Enter username: ")
password = input("Enter password: ")

match = False
while not match:
    with open("userDetails.txt", "r") as file:
        for line in file:
            user_data = line.split(",")
            real_user, real_pass = user_data[1].strip(), user_data[2].strip()
            if username == real_user and password == real_pass
                print('Match')
                match = True
                break
        else:
            username = input("Re-enter username: ")
            password = input("Re-enter password: ")

提示:您也可以试试CSV模块,以便在Python中读取数据文件。

答案 1 :(得分:0)

当到达循环结束文件的末尾时,正确的代码是:

file = open("userDetails.txt", "r")
match = False
while match == False:
    for each in file:
        each = each.split(", ")
        realUser = each[1]
        realPass = each[2]
        if realUser == username and realPass == password:
            match = True
            print("match")
        elif each == "":
            username = input("Re-enter username: ")
            password = input("Re-enter password: ")
            match = False