使用Python获取文件的MIME类型

13

我想确定一个XML文件的MIME类型,但是我收到了关于某个实例作为第一个参数的错误。我是Python的新手,请帮忙。以下是我正在使用的代码以及它抛出的错误。

from mimetypes import MimeTypes
import urllib 
FILENAME = 'Upload.xml'
url = urllib.pathname2url(FILENAME)
type = MimeTypes.guess_type(url)
print type

**ERROR :** Traceback (most recent call last):
File "/home/navi/Desktop/quicksort.py", line 20, in <module>
type = MimeTypes.guess_type(url)
TypeError: unbound method guess_type() must be called with MimeTypes instance as first argument (got str instance instead)

这个回答解决了你的问题吗?如何在Python中查找文件的MIME类型? - Smart Manoj
1个回答

24

错误提示您需要初始化MimeTypes类:

>>> from mimetypes import MimeTypes
>>> import urllib 
>>> 
>>> mime = MimeTypes()
>>> url = urllib.pathname2url('Upload.xml')
>>> mime_type = mime.guess_type(url)
>>> 
>>> print mime_type
('application/xml', None)

虽然你可以跳过这一步,直接使用 mimetypes.guess_type

>>> import urllib, mimetypes
>>> 
>>> url = urllib.pathname2url('Upload.xml')
>>> print mimetypes.guess_type(url)
('application/xml', None)

6
更直接的方法是直接使用mimetypes.guess_type,而不是通过MimeTypes实例来使用。 - bdash
@bdash 我在我的代码中尝试了同样的事情,但没有成功,请检查问题中粘贴的代码。 - Navi
@devileye,您的代码没有实现我建议的功能。请查看此答案的第二部分。 - bdash
1
在Python 3.6中:mimetypes.guess_type(path_file_to_upload)[1] - JinSnow
@JinSnow 这应该是 mimetypes.guess_type(path_file_to_upload)[0] 吗? - ytu
@ytu 抱歉,我不记得了。要检查它,只需打印它(用0和1)。 - JinSnow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接