我正在尝试使用 tkinter.filedialog
在 Mac 中选择文件。
以这种方式它可以很好地处理一种文件类型:
filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx")])
但是,我想选择 xlsx
或 xls
文件。我搜索了一下,发现了一个问题filedialog, tkinter and opening files .我使用类似的方式,但如果我更改为此方式,它不适用于 Mac:
filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx; *.xls")])
我应该如何更改以在文件对话框中选择 xlsx
或 xls
文件?
最佳答案
看来你必须用空格而不是来分隔通配符模式;
(在Python 3.5.1上验证):
from tkinter import filedialog
# add `, initialdir="..."` to set the initial directory shown in the dialog
filedialog.askopenfilename(filetypes=[("Excel files", ".xlsx .xls")])
注意:
- 虽然
"*.xlsx *.xls"
也可以工作(至少在 Windows 和 macOS 上),但初始的*
不是必需的。[ 1] .*
或*.*
是否有效(无过滤器)似乎取决于平台; 省略filetypes
在这种情况下是更好的选择。- 类似地,匹配部分 base 文件名(如
foo.txt
或foo*.txt
)的行为似乎是平台相关:在 Windows 上,这些确实有效,带有前缀*
(*foo.txt
和*foo*.txt
),而在 macOS 上,它们似乎不匹配。
如果依赖于平台的行为改为/也链接到不同的 tkinter 版本,请告诉我们。
[1] Jakub Bláha报告说 "*.xlsx *.xls"
在 Windows 10 版本 1903 上的 Python 3.7.4 中实际上对他不起作用(尽管我没有看到同样的问题);为了安全起见,如果不需要,请省略 *
。
关于python - 在一个文件类型中添加多个扩展名 mac - tkinter/filedialog/askopenfilename,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44403566/