mimetypes
— 将文件名映射到 MIME 类型¶
源代码: Lib/mimetypes.py
mimetypes
模块在文件名或 URL 与与文件名扩展名关联的 MIME 类型之间进行转换。 提供从文件名到 MIME 类型以及从 MIME 类型到文件名扩展名的转换;后一种转换不支持编码。
该模块提供一个类和许多便捷函数。 这些函数是此模块的常规接口,但某些应用程序也可能对该类感兴趣。
下面描述的函数为此模块提供主要接口。 如果模块尚未初始化,它们将调用 init()
(如果它们依赖于 init()
设置的信息)。
- mimetypes.guess_type(url, strict=True)¶
根据 url 给定的文件名、路径或 URL 来猜测文件的类型。 URL 可以是字符串或 路径类对象。
返回值是一个元组
(type, encoding)
,其中,如果无法猜测类型(缺少或未知后缀),则 type 为None
,或者为'type/subtype'
形式的字符串,可用于 MIME content-type 标头。对于无编码,encoding 为
None
,或者为用于编码的程序名称(例如 compress 或 gzip)。 编码适用于用作 Content-Encoding 标头,不适用于用作 Content-Transfer-Encoding 标头。 映射由表驱动。 编码后缀区分大小写; 类型后缀首先区分大小写尝试,然后不区分大小写尝试。可选参数 strict 是一个标志,用于指定已知 MIME 类型的列表是否仅限于 在 IANA 注册的 官方类型。 当 strict 为
True
(默认)时,仅支持 IANA 类型; 当 strict 为False
时,还会识别一些额外的非标准但常用的 MIME 类型。在 3.8 版本中更改: 添加了对作为 路径类对象 的 url 的支持。
自 3.13 版本弃用: 传递文件路径而不是 URL 是 软弃用 的。为此,请使用
guess_file_type()
。
- mimetypes.guess_file_type(path, *, strict=True)¶
根据 path 给定的路径来猜测文件的类型。 与
guess_type()
函数类似,但接受路径而不是 URL。 路径可以是字符串、字节对象或 路径类对象。在 3.13 版本中添加。
- mimetypes.guess_all_extensions(type, strict=True)¶
根据 type 给定的 MIME 类型来猜测文件的扩展名。 返回值是一个字符串列表,其中包含所有可能的文件名扩展名,包括前导点 (
'.'
)。 不能保证扩展名已与任何特定的数据流相关联,但会由guess_type()
和guess_file_type()
映射到 MIME 类型 type。可选参数 strict 与
guess_type()
函数具有相同的含义。
- mimetypes.guess_extension(type, strict=True)¶
根据 type 给定的 MIME 类型来猜测文件的扩展名。 返回值是一个字符串,其中包含文件名扩展名,包括前导点 (
'.'
)。 不能保证扩展名已与任何特定的数据流相关联,但会由guess_type()
和guess_file_type()
映射到 MIME 类型 type。 如果无法为 type 猜测扩展名,则返回None
。可选参数 strict 与
guess_type()
函数具有相同的含义。
一些其他函数和数据项可用于控制模块的行为。
- mimetypes.init(files=None)¶
初始化内部数据结构。 如果给定,则 files 必须是应使用来扩充默认类型映射的文件名序列。 如果省略,则要使用的文件名取自
knownfiles
; 在 Windows 上,将加载当前的注册表设置。 在 files 或knownfiles
中命名的每个文件优先于之前命名的文件。 允许重复调用init()
。为 files 指定一个空列表将阻止应用系统默认值:只有来自内置列表的众所周知的值才会存在。
如果 files 为
None
,则内部数据结构将完全重建为初始默认值。 这是一个稳定的操作,多次调用时会产生相同的结果。在 3.2 版本中更改: 以前,Windows 注册表设置会被忽略。
- mimetypes.read_mime_types(filename)¶
加载文件 filename 中给定的类型映射(如果存在)。类型映射以字典形式返回,该字典将文件扩展名(包括前导点 (
'.'
))映射到'type/subtype'
形式的字符串。如果文件 filename 不存在或无法读取,则返回None
。
- mimetypes.add_type(type, ext, strict=True)¶
添加从 MIME 类型 type 到扩展名 ext 的映射。当扩展名已知时,新类型将替换旧类型。当类型已知时,扩展名将添加到已知扩展名列表中。
当 strict 为
True
(默认值) 时,该映射将添加到官方 MIME 类型中,否则添加到非标准类型中。
- 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'
MimeTypes 对象¶
对于可能需要多个 MIME 类型数据库的应用程序,MimeTypes
类可能很有用;它提供了类似于 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_types
和types_map
初始化。
- types_map_inv¶
包含两个字典的元组,将 MIME 类型映射到文件名扩展名列表:第一个字典用于非标准类型,第二个字典用于标准类型。它们由
common_types
和types_map
初始化。
- guess_extension(type, strict=True)¶
类似于
guess_extension()
函数,使用作为对象一部分存储的表。
- guess_type(url, strict=True)¶
类似于
guess_type()
函数,使用作为对象一部分存储的表。
- guess_file_type(path, *, strict=True)¶
类似于
guess_file_type()
函数,使用作为对象一部分存储的表。在 3.13 版本中添加。
- guess_all_extensions(type, strict=True)¶
类似于
guess_all_extensions()
函数,使用作为对象一部分存储的表。
- read(filename, strict=True)¶
从名为 filename 的文件加载 MIME 信息。这使用
readfp()
来解析文件。如果 strict 为
True
,则信息将添加到标准类型列表中,否则添加到非标准类型列表中。
- readfp(fp, strict=True)¶
从打开的文件 fp 加载 MIME 类型信息。文件必须具有标准
mime.types
文件的格式。如果 strict 为
True
,则信息将添加到标准类型列表中,否则添加到非标准类型列表中。
- read_windows_registry(strict=True)¶
从 Windows 注册表中加载 MIME 类型信息。
可用性:Windows。
如果 strict 为
True
,则信息将添加到标准类型列表中,否则添加到非标准类型列表中。在版本 3.2 中添加。
- add_type(type, ext, strict=True)¶
添加从 MIME 类型 type 到扩展名 ext 的映射。当扩展名已知时,新类型将替换旧类型。当类型已知时,扩展名将添加到已知扩展名列表中。
当 strict 为
True
(默认值) 时,该映射将添加到官方 MIME 类型中,否则添加到非标准类型中。