【问题标题】:Python 3 - Tkinter - askopenfilename - Filter filenames trough regEx (Not by extension)Python 3 - Tkinter - askopenfilename - 通过正则表达式过滤文件名(不是通过扩展名)
【发布时间】:2020-08-20 15:19:38
【问题描述】:

是否可以过滤我们在使用 tkinter askopenfilename 浏览文件时看到的文件名? 我不需要按扩展名过滤,而是按文件名中的特定模式过滤。

例如,我在一个文件夹中有数百个文件,大多数文件名为“Chapter_XXX - Title”,只有一个文件名为“Book”。我想只显示以 Book 开头的文件。

这样的事情可能吗?

谢谢马丁,这行得通。这些类型的示例应包含在文档中。

我需要的代码:

fileName = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("Books","Book*.*"),("All files","*.*")))

【问题讨论】:

  • 为什么不使用glob
  • 或者您可以使用filetype 参数来定义特定的过滤器,例如(required files,book*.*)
  • 感谢您的建议。也不知道glob,看起来很有趣,但真的不知道如何将它与askopenfilename结合起来。

标签: python tkinter


【解决方案1】:

就像扩展名一样,您可以使用filetypesargument 定义应包含在文件名中的字符串。

因此,类似于扩展元组('Excel Spreadsheet','.xlsx'),您可以指定获取所有.xlsx 文件,您可以定义('Book Files','book*.*')。这将产生一个列表,其中字符串 "book" 出现在文件名中的任何位置。

【讨论】:

  • 我昨晚正在处理这个问题,如果我不包括 ("any file", "*.*") 它会引发异常。关于“坏的 Mac 扩展”或类似的东西。您可能希望将其包含在您的答案中。需要说明的是,我使用的是 windows,但仍然出现该错误。
  • 无论如何,我不会使用*.* 作为扩展名设置为星号之前的部分。你会得到**.* 作为搜索字符串,这不起作用。只需使用("any file", ".*")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多