19.5. mimetypes - 将文件名映射到MIME类型

源代码: Lib / mimetypes.py

mimetypes模块在文件名或URL与与文件扩展名关联的MIME类型之间进行转换。提供从文件名到MIME类型和从MIME类型到文件扩展名的转换;后面的转换不支持编码。

该模块提供一个类和多个方便功能。函数是这个模块的正常接口,但是一些应用程序也可能对类感兴趣。

下面描述的功能提供了该模块的主要接口。如果模块尚未初始化,如果它们依赖于信息init()设置,则它们将调用init()

mimetypes.guess_type(url, strict=True)

根据文件名或URL(由url给出)猜测文件类型。返回值为元组(类型, 编码)其中类型None如果类型不能猜测(缺少或未知的后缀)或者一个形式为'type/subtype'的字符串,可用于MIME content-type

编码None,无编码或用于编码的程序名称。compressgzip)。该编码适合用作Content-Encoding t>头,而不是作为Content-Transfer-Encoding头。映射是表驱动的。编码后缀区分大小写;类型后缀首先尝试敏感,然后情况不敏感。

可选的strict参数是一个标志,指定已知MIME类型的列表是否仅限于使用IANA注册的官方类型严格True(默认值)时,仅支持IANA类型;当严格False时,还会识别一些其他非标准但常用的MIME类型。

mimetypes.guess_all_extensions(type, strict=True)

根据由类型给出的MIME类型猜测文件的扩展名。返回值是给出所有可能的文件扩展名的字符串列表,包括前导点('.')。这些扩展不能保证与任何特定数据流相关联,但会通过guess_type()映射到类型的MIME类型。

可选的strict参数与guess_type()函数具有相同的含义。

mimetypes.guess_extension(type, strict=True)

根据由类型给出的MIME类型猜测文件的扩展名。返回值是一个给出文件名扩展名的字符串,包括前导点('.')。该扩展不能保证已与任何特定数据流相关联,但将通过guess_type()映射到MIME类型类型如果未能为类型猜出扩展名,则返回None

可选的strict参数与guess_type()函数具有相同的含义。

一些附加功能和数据项可用于控制模块的行为。

mimetypes.init(files=None)

初始化内部数据结构。如果给定,文件必须是应用于扩充默认类型映射的文件名的序列。如果省略,要使用的文件名取自knownfiles;在Windows上,当前注册表设置已加载。文件knownfiles中命名的每个文件优先于在其之前命名的文件。重复调用init()

文件指定空列表将防止应用系统默认值:只有内建列表中会显示众所周知的值。

在版本3.2中更改:以前,Windows注册表设置被忽略。

mimetypes.read_mime_types(filename)

加载文件filename中给出的类型映射(如果存在)。类型映射作为将文件扩展名(包括前导点('.'))映射到形式为'type/subtype'的字符串的字典返回。如果文件filename不存在或无法读取,则会返回None

mimetypes.add_type(type, ext, strict=True)

将MIME类型类型的映射添加到扩展ext当扩展名已知时,新类型将替换旧的扩展名。当类型已知时,扩展将添加到已知扩展的列表中。

strictTrue(默认值)时,映射将添加到官方MIME类型,否则添加到非标准MIME类型。

mimetypes.inited

指示全局数据结构是否已被初始化的标志。init()设置为True

mimetypes.knownfiles

通常安装的类型映射文件名列表。这些文件通常命名为mime.types,并且由不同的软件包安装在不同的位置。

mimetypes.suffix_map

字典映射后缀到后缀。这用于允许识别编码和类型由相同扩展名指示的编码文件。例如,.tgz扩展映射到.tar.gz,以允许单独识别编码和类型。

mimetypes.encodings_map

将文件扩展名映射到编码类型。

mimetypes.types_map

字典映射MIME类型的文件扩展名。

mimetypes.common_types

模块的示例用法:

>>> import mimetypes
>>> mimetypes.init()
>>> mimetypes.knownfiles
['/etc/mime.types', '/etc/httpd/mime.types', ... ]
>>> mimetypes.suffix_map['.tgz']
'.tar.gz'
>>> mimetypes.encodings_map['.gz']
'gzip'
>>> mimetypes.types_map['.tgz']
'application/x-tar-gz'

19.5.1. MimeTypes Objects

MimeTypes类可能对可能需要多个MIME类型数据库的应用程序有用;它提供类似于mimetypes

class mimetypes.MimeTypes(filenames=(), strict=True)

此类表示MIME类型数据库。默认情况下,它提供对与此模块的其余部分相同的数据库的访问。The initial database is a copy of that provided by the module, and may be extended by loading additional mime.types-style files into the database using the read() or readfp() methods. 如果不需要默认数据,则也可以在加载附加数据之前清除映射字典。

可选的文件名参数可用于使附加文件加载到默认数据库的“顶部”。

MimeTypes.suffix_map

字典映射后缀到后缀。这用于允许识别编码和类型由相同扩展名指示的编码文件。例如,.tgz扩展映射到.tar.gz,以允许单独识别编码和类型。这最初是模块中定义的全局suffix_map的副本。

MimeTypes.encodings_map

将文件扩展名映射到编码类型。这最初是模块中定义的全局encodings_map的副本。

MimeTypes.types_map

Tuple包含两个字典,将文件扩展名映射到MIME类型:第一个字典用于非标准类型,第二个字典用于标准类型。它们由common_typestypes_map初始化。

MimeTypes.types_map_inv

Tuple包含两个字典,将MIME类型映射到文件扩展名列表:第一个字典用于非标准类型,第二个字典用于标准类型。它们由common_typestypes_map初始化。

MimeTypes.guess_extension(type, strict=True)

类似于guess_extension()函数,使用作为对象的一部分存储的表。

MimeTypes.guess_type(url, strict=True)

类似于guess_type()函数,使用作为对象的一部分存储的表。

MimeTypes.guess_all_extensions(type, strict=True)

类似于guess_all_extensions()函数,使用作为对象的一部分存储的表。

MimeTypes.read(filename, strict=True)

从名为filename的文件加载MIME信息。这使用readfp()来解析文件。

如果严格True,信息将被添加到标准类型的列表,否则添加到非标准类型的列表。

MimeTypes.readfp(fp, strict=True)

从打开的文件fp加载MIME类型信息。该文件必须具有标准mime.types文件的格式。

如果严格True,则信息将添加到标准类型列表中,否则添加到非标准类型列表中。

MimeTypes.read_windows_registry(strict=True)

从Windows注册表加载MIME类型信息。可用性:Windows。

如果严格True,则信息将添加到标准类型列表中,否则添加到非标准类型列表中。

版本3.2中的新功能。