【发布时间】:2020-05-12 16:04:54
【问题描述】:
作为项目的一部分,我构建了一个非常简单的程序,用于检查给定字符串是否存在于提供的文本文件中。
程序使用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)倒回到开头。
标签: python file for-loop while-loop