Python中if生效、elif被跳过、else正常运行的问题求助
Tkinter根据文件内容打开对应窗口的问题修复
问题根源
你直接在文件对象上使用in操作符进行判断,这会导致文件指针被消耗:第一次判断时,程序从文件开头查找关键词,找到后指针停在匹配位置;后续的elif判断会从当前指针位置继续读取,而非从头扫描整个文件,所以即使文件里有其他关键词也会被跳过,最终只能触发第一个匹配项或else分支。
修复代码
先把文件全部内容读取到字符串变量中,再基于这个变量判断,确保所有条件都针对完整的文件内容:
with open("select.txt", "r") as file: content = file.read() # 一次性读取全部文件内容到字符串 if "Foo" in content: foo_page() elif "Bar" in content: bar_page() elif "Doo" in content: doo_page() elif "Baa" in content: baa_page() elif "Doop" in content: doop_page() elif "Ahh" in content: ahh_page() elif "Dee" in content: dee_page() elif "Dum" in content: dum_page() else: oompa_page() win2.mainloop()
额外说明
如果select.txt中可能存在多个关键词、需要执行多个页面,把所有elif改成独立的if即可;如果只需匹配第一个出现的关键词,当前的elif逻辑就足够。
内容的提问来源于stack exchange,提问作者ecc3_15
相关产品推荐
相关产品推荐

