Tkinter开启多文件选择时.txt格式校验误报错如何解决?
问题根源
当filedialog.askopenfilename的multiple参数设为True时,返回值是包含所有选中文件路径的元组,而非单个文件路径字符串。你原来的代码直接将整个元组转为字符串后切割后缀,得到的结果必然不是正常的.txt后缀,就会触发误报。
解决步骤
- 先判断返回的元组是否为空(处理用户点击取消、未选择文件的场景),避免后续处理报错
- 遍历元组内的每一个文件路径,逐个校验后缀
- 只要存在任意一个非
.txt后缀的文件,就弹出错误提示,终止后续操作 - 所有文件都符合要求再执行后续的文件处理逻辑
修正后代码示例
@staticmethod # 文件选择方法 def open_file(): # multiple=True时返回的是文件路径元组 files = filedialog.askopenfilename(multiple=True) # 处理用户未选择任何文件的情况 if not files: return # 逐个校验每个文件的后缀 for file_path in files: _, extension = os.path.splitext(file_path) # 加lower()是为了兼容大写后缀的.TXT格式文件,不需要可以去掉 if extension.lower() != '.txt': messagebox.showerror("Error", "您选中的文件不都是.txt格式,请重新选择") return # 所有文件校验通过后,在此处添加后续的业务处理逻辑
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

