使用 Python filedialog askopenfilename() 方法打开文件时如何获取文件类型?

How do you get the file type when a file is opened using the Python filedialog askopenfilename() method?

我用 python tkinter 编写了这个程序,它使用 tkinter filedialog askopenfilename() 方法打开一个文件。它将获取该文件的内容并将其插入到文本框中。

我希望能够获取该文件的文件类型(即,如果文件是 Python 文件,那么我希望控制台打印“.py”,如果它是 HTML 那么我希望它打印“.html”等等)。

这就是我尝试的方法:

FilePath = filedialog.askopenfilename(initialdir="C:/gui/", title="Open a File", filetypes=(("All Files", "*.*"), ("Text Files", "*.txt"), ("HTML Files", "*.html"), ("CSS Files", "*.css"),("JavaScript Files", "*.js"), ("Python Files", "*.py")))

print(FilePath)

然而,这给了我: /home/Test/RandomFolder/Test.py

是否可以只得到最后的“.py”?

open_File = easygui.fileopenbox(msg="Choose a file", default=r'C:\Users\user\*.txt')

extension = open_File.split('.', 1)

print(extension)

所以我在这里所做的是获取用户路径,因为通常在路径中你不会在任何地方有 . 除非它在文件末尾,我已经拆分了string into 2,如果你想要 . 之前的所有内容只需使用 extension = open_File.split('.', 0),之后的所有内容使用上面的代码。

此外,虽然我在这种情况下使用的是 Easygui,但它适用于任何文件对话框方法,原则是关于如何从字符串中获取所需内容。

您可以使用 os.path.splitext():

import os
...
FilePath = filedialog.askopenfilename(initialdir="C:/gui/", title="Open a File", filetypes=(("All Files", "*.*"), ("Text Files", "*.txt"), ("HTML Files", "*.html"), ("CSS Files", "*.css"),("JavaScript Files", "*.js"), ("Python Files", "*.py")))

_, fext = os.path.splitext(FilePath)
print(fext)