作为一个项目的一部分,我建立了一个非常简单的程序,用于检查给定的字符串是否存在于所提供的文本文件中。
该程序检查输入的内容是否等于文件的每一行,用一个 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%如期运行,所以我怀疑这与它处理文件本身的方式有关,但我不知道为什么。
先谢谢你的帮助
你在第一次迭代时走完了整个文件,所以第二次迭代时就没有什么可读的了。你可以在每次迭代时打开文件,或者通过以下方法将位置移动到起始位置 file.seek(0)
.