For循环似乎只运行一次

问题描述 投票:0回答:2

作为一个项目的一部分,我建立了一个非常简单的程序,用于检查给定的字符串是否存在于所提供的文本文件中。

该程序检查输入的内容是否等于文件的每一行,用一个 for 循环,如果数值对应则返回True,如果不对应则返回False。

with open (names, "r") as file:
    while True: 
        name_check = input("name: ")
        if name_check == "":
            #command to end the program

            break
        for newline in file:
            #compares the input with every line in the txt file

            newline_stripped = newline.lower().strip()
            if newline_stripped == name_check:         

                print (True)
            else:
                print (False)
    file.close()

问题是,当我运行这段代码时,第一次迭代工作正常,它按照预期返回一串False和True,然后要求另一个输入,但是当再次输入时,它立即要求另一个输入,而不返回任何序列,就像 for 循环被完全跳过。

我试着用一个数字列表代替一个文本文件作为源文件来运行它(经过适当的修改),它100%如期运行,所以我怀疑这与它处理文件本身的方式有关,但我不知道为什么。

先谢谢你的帮助

python file for-loop while-loop
2个回答
1
投票

你在第一次迭代时走完了整个文件,所以第二次迭代时就没有什么可读的了。你可以在每次迭代时打开文件,或者通过以下方法将位置移动到起始位置 file.seek(0).

© www.soinside.com 2019 - 2024. All rights reserved.