如何让Tkinter FileDialog返回带*?通配符的不存在文件路径字符串
Tkinter文件对话框支持通配符输入解决方案
Tkinter 原生的 asksaveasfilename 方法默认开启文件名合法性校验,不允许输入 * 等特殊字符,可通过以下两种方案实现需求:
方案1:修改参数绕过原生校验(操作最简便)
核心是关闭覆写确认校验,允许输入不存在的文件名,代码如下:
import tkinter as tk root = tk.Tk() root.withdraw() # 新增confirmoverwrite=False参数关闭文件存在校验 filefilter = tk.filedialog.asksaveasfilename( confirmoverwrite=False, title="请输入带通配符的过滤规则" ) if filefilter: for filename in BatchProcess(filefilter): print(filename)
这个方案下用户可以直接在文件名输入框输入带*的规则,点击保存后就能拿到完整的带通配符的路径字符串,不会触发非法文件名提示。
方案2:拆分选择逻辑(兼容性最强)
如果部分系统的原生文件对话框仍然拦截特殊字符,可以拆分操作步骤,先选目标文件夹再输入通配符规则,手动拼接路径:
import tkinter as tk import os from tkinter import filedialog, simpledialog root = tk.Tk() root.withdraw() # 选择目标文件夹 select_dir = filedialog.askdirectory(title="选择目标文件夹") if not select_dir: exit() # 输入通配符规则 pattern = simpledialog.askstring("文件过滤规则", "请输入带通配符的文件名规则:\n示例:fileexample*.txt") if not pattern: exit() # 拼接完整过滤路径 filefilter = os.path.join(select_dir, pattern) for filename in BatchProcess(filefilter): print(filename)
这个方案完全绕过了系统文件对话框的文件名校验,所有平台都可以正常使用。
内容的提问来源于stack exchange,提问作者Mike Smith
相关产品推荐
相关产品推荐

