18.7. mimetypes — 将文件名映射到 MIME 类型 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/mimetypes
跳转至:导航、​搜索

18.7. 模仿类型 — 将文件名映射到 MIME 类型

源代码: :source:`Lib/mimetypes.py`



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

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

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

mimetypes.guess_type(url, strict=True)

根据 url 给出的文件名或 URL 猜测文件的类型。 返回值是一个 (type, encoding) 元组,其中 typeNone 如果类型无法被猜测(缺少或未知后缀)或 'type/subtype',可用于 MIME content-type 标头。

encodingNone 表示无编码或用于编码的程序名称(例如 compressgzip)。 该编码适合用作 Content-Encoding 标头,not 作为 Content-Transfer-Encoding 标头。 映射是表驱动的。 编码后缀区分大小写; 类型后缀首先区分大小写,然后不区分大小写。

可选的 strict 参数是一个标志,指定已知 MIME 类型列表是否仅限于在 IANA 注册的官方类型 。 当 strictTrue(默认)时,仅支持 IANA 类型; 当 strictFalse 时,一些额外的非标准但常用的 MIME 类型也被识别。

mimetypes.guess_all_extensions(type, strict=True)

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

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

mimetypes.guess_extension(type, strict=True)

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

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

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

mimetypes.init(files=None)

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

files 指定一个空列表将阻止应用系统默认值:只有众所周知的值才会出现在内置列表中。

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

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

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

strictTrue(默认)时,映射将添加到官方 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'

18.7.1. MimeTypes 对象

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

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

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

可选的 filenames 参数可用于导致在默认数据库的“顶部”加载其他文件。

suffix_map

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

encodings_map

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

types_map

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

types_map_inv

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

guess_extension(type, strict=True)

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

guess_type(url, strict=True)

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

guess_all_extensions(type, strict=True)

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

read(filename, strict=True)

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

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

readfp(fp, strict=True)

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

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

read_windows_registry(strict=True)

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

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

2.7 版中的新功能。