I am trying to use tkinter.filedialog to choose the file in Mac.
It works fine with one filetype in this way:
filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx")])
However, I want to choose either xlsx or xls files. I searched and found a question filedialog, tkinter and opening files. I use the similar way but it does not work with Mac if I change to this:
filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx; *.xls")])
How should I change to choose either xlsx or xls files in the file dialog?
It seems that you must separate the wildcard patterns with a space rather than ; (verified on 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")])
Note:
"*.xlsx *.xls" would work too (at least on Windows and macOS), the initial * isn't necessary.[1]
.* or *.* works (no filter) seems to be platform-dependent; omitting filetypes is the better option in that case.foo.txt or foo*.txt - appears to be platform-dependent: on Windows, these do work, with a prepended * (*foo.txt and *foo*.txt), whereas on macOS they seem to match nothing.If the platform-dependent behaviors are instead / also linked to different tkinter versions, do let us know.
[1] Jakub Bláha reports that "*.xlsx *.xls" didn't actually work for him in Python 3.7.4 on Windows 10 version 1903 (though I don't see the same problem); to be safe, omit the * if not needed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With