mimetypes --- 将文件名映射到 MIME 类型¶
源代码: Lib/mimetypes.py
mimetypes 模块可以在文件名或 URL 和关联到文件扩展名的 MIME 类型之间执行转换。 所提供的转换包括从文件名到 MIME 类型和从 MIME 类型到文件扩展名;后一种转换不支持编码格式。
该模块提供了一个类和一些便捷函数。 这些函数是该模块通常的接口,但某些应用程序可能也会希望使用类。
下列函数提供了此模块的主要接口。 如果此模块尚未被初始化,它们将会调用 init(),如果它们依赖于 init() 所设置的信息的话。
- mimetypes.guess_type(url, strict=True)¶
根据 url 给出的文件名、路径或 URL 来猜测文件的类型,URL 可以为字符串或 path-like object。
返回值是一个元组
(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 使用 path-like object 的支持。
自 3.13 版起已处于 Soft deprecated 状态: 传入文件路径而非 URL 的做法已经 soft deprecated。 此种情况改用
guess_file_type()。
- mimetypes.guess_file_type(path, *, strict=True)¶
根据由 path 给出的文件路径猜测其类型。 类似于
guess_type()函数,但可接受路径而非 URL。 路径可以是字符串、字节串对象或 path-like object。Added in version 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(file)¶
如果名为 file 的文件存在,则加载其中给出的类型映射。 file 必须是指定要读取的文件名的字符串。类型映射将作为一个字典返回,该字典将文件扩展名(包括前导点号
'.')映射为'type/subtype'形式的字符串。如果文件不存在或无法读取,则返回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 对象¶
MimeTypes 类可以被用于那些需要多个 MIME 类型数据库的应用程序;它提供了与 mimetypes 模块所提供的类似接口。
- class mimetypes.MimeTypes(filenames=(), strict=True)¶
此类表示一个 MIME 类型数据库。默认情况下,它提供与该模块其余部分相同的数据库访问权限。初始数据库是根据 Python 内置的 MIME 类型表创建的。可以使用
read()或readfp()方法通过将额外的mime.types风格文件加载到数据库中来对其进行扩展。如果不需要默认数据,也可以在加载额外数据之前清空映射字典。可选的 filenames 形参可被用来让附加文件被载入到默认数据库“之上”。
- suffix_map¶
将后缀映射到后缀的字典。这用于允许识别编码和类型由相同扩展名指示的已编码文件。例如,
.tgz扩展名被映射到.tar.gz以便分别识别编码和类型。它使用一些预定义的值进行初始化。
- encodings_map¶
将文件扩展名映射到编码类型的字典。它使用一些预定义的值进行初始化。
- types_map¶
包含两个字典的元组,将文件扩展名映射到 MIME 类型:第一个字典用于非标准类型,第二个字典用于标准类型。它们使用一些预定义的值以及从 filenames 实参指定的文件中加载的 MIME 类型信息进行初始化。
- types_map_inv¶
包含两个字典的元组,将 MIME 类型映射到文件扩展名列表:第一个字典用于非标准类型,第二个字典用于标准类型。它们使用一些预定义的值以及从 filenames 实参指定的文件中加载的 MIME 类型信息进行初始化。
- guess_extension(type, strict=True)¶
类似于
guess_extension()函数,使用存储的表作为对象的一部分。
- guess_type(url, strict=True)¶
类似于
guess_type()函数,使用存储的表作为对象的一部分。
- guess_file_type(path, *, strict=True)¶
类似于
guess_file_type()函数,使用存储的表作为对象的一部分。Added in version 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 类型信息。
Availability: Windows.
如果 strict 为
True,信息将被添加到标准类型列表,否则添加到非标准类型列表。Added in version 3.2.
- add_type(type, ext, strict=True)¶
添加一个从 MIME 类型 type 到扩展名 ext 的映射。 当扩展名已知时,新类型将替代旧类型。 当类型已知时,扩展名将被添加到已知扩展名列表。
当 strict 为
True时(默认值),映射将被添加到官方 MIME 类型,否则添加到非标准类型。