Skip to main content

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

源代码: Lib/mimetypes.py


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

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

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

mimetypes.guess_type(url, strict=True)

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

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

可选的 strict 参数是指定已知MIME类型的列表是否仅限于官方类型 向IANA注册 的标志。当 strictTrue (默认值)时,仅支持IANA类型;当 strictFalse 时,还识别一些附加的非标准但通常使用的MIME类型。

mimetypes.guess_all_extensions(type, strict=True)

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

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

mimetypes.guess_extension(type, strict=True)

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

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

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

mimetypes.init(files=None)

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

files 指定空列表将防止应用系统默认值:从内置列表中只显示众所周知的值。

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

mimetypes.read_mime_types(filename)

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

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

将MIME类型 type 的映射添加到扩展名 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

字典映射文件扩展名为非标准,但常见的MIME类型。

模块的示例用法:

>>> 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对象

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

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

此类表示MIME类型数据库。默认情况下,它提供对与此模块其余部分相同的数据库的访问。初始数据库是模块提供的副本,可以通过使用 read()readfp() 方法将附加的 mime.types -style文件加载到数据库中进行扩展。如果不需要默认数据,则也可以在加载附加数据之前清除映射字典。

可选 filenames 参数可用于以使其他文件为“在上面”的缺省数据库的加载。

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() 来解析文件。

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

MimeTypes.readfp(fp, strict=True)

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

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

MimeTypes.read_windows_registry(strict=True)

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

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

3.2 新版功能.