python - For循环似乎只运行一次
问题描述
作为项目的一部分,我构建了一个非常简单的程序,用于检查给定字符串是否存在于提供的文本文件中。
程序使用循环检查输入是否等于文件的每一行,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)
。
推荐阅读
- c++ - free():实现vector的erase()时指针无效
- reactjs - 如何在静态 index.html 文件中使用 react-router BrowserRouter
- matlab - 如何在MATLAB中用双值在matlab中声明分段函数?
- ruby-on-rails - 乘客和 rbenv 问题 - 库版本不兼容
- python - 有没有办法每次使用 for 循环调用列表中的项目?
- r - 如何使用 R 和 Shiny 在表格的单元格中嵌入图像?
- python - 如何更新 KML 以包含具有值的新元素
- javascript - 当数据源是数组时,jQuery DataTables 刷新网格
- python - sklearn 'preprocessor' 子模块在导入时不可用
- javascript - 发球断纱