18.7. mimetypes-将文件名 Map 到 MIME 类型

源代码: Lib/mimetypes.py


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

该模块提供一类和许多便利Function。这些Function是此模块的常规接口,但是某些应用程序也可能对该类感兴趣。

下述Function为该模块提供了主要接口。如果尚未初始化模块,则他们将依靠init()设置的信息来调用init()

  • mimetypes. guess_type(* url strict = True *)
    • 根据文件名或 URL 来猜测文件的类型,由* url 给出。返回值是 Tuples(type, encoding),如果无法猜测类型(缺少或后缀未知)或类型为'type/subtype'的字符串,则 type *为None,可用于 MIME * content-type *Headers。
  • encoding None,表示没有编码或用于编码的程序名称(例如 compressgzip )。编码适合用作 Content-Encoding Headers, 不能 用作 Content-Transfer-Encoding *Headers。Map 是表驱动的。编码后缀区分大小写;类型后缀首先区分大小写,然后不区分大小写。

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

  • mimetypes. guess_all_extensions(* type strict = True *)
    • 根据* type 给出的 MIME 类型,猜测文件的 extensions。返回值是一个字符串列表,提供所有可能的文件 extensions,包括前导点('.')。不能保证 extensions 已与任何特定的数据流相关联,但是 extensions 将由guess_type()Map 到 MIME 类型 type *。

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

  • mimetypes. guess_extension(* type strict = True *)
    • 根据* type 给出的 MIME 类型,猜测文件的 extensions。返回值是一个字符串,提供文件名 extensions,包括前导点('.')。不能保证 extensions 已与任何特定的数据流相关联,但 extensions 将由guess_type()Map 到 MIME 类型 type 。如果无法猜测 type *的 extensions,则返回None

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

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

  • mimetypes. init(* files = None *)
    • 初始化内部数据结构。如果给定,* files 必须是一系列文件名,应使用这些文件名来扩展默认类型 Map。如果Ellipsis,则使用的文件名取自knownfiles;在 Windows 上,将加载当前的注册表设置。以 files *或knownfiles命名的每个文件都优先于以其命名的文件。允许重复调用init()

为* files *指定一个空列表将阻止应用系统默认值:内置列表中仅存在已知值。

在 2.7 版中进行了更改:以前,Windows 注册表设置被忽略。

  • mimetypes. read_mime_types(* filename *)

    • 加载文件* filename 中提供的类型 Map(如果存在)。类型 Map 作为字典 Map 文件名 extensions(包括前导点('.'))返回到格式为'type/subtype'的字符串。如果文件 filename *不存在或无法读取,则返回None
  • mimetypes. add_type(* type ext strict = True *)

    • 添加从 MIME 类型* type 到 extensions ext *的 Map。当 extensions 已知时,新类型将替换旧的。当类型已知时,extensions 将添加到已知 extensions 列表中。

如果* strict *为True(默认值),则 Map 将添加到正式的 MIME 类型,否则将添加到非标准的 MIME 类型。

  • mimetypes. inited

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

    • 通常安装的类型 Map 文件名称列表。这些文件通常命名为mime.types,并pass不同的软件包安装在不同的位置。
  • mimetypes. suffix_map

    • 字典 Map 后缀到后缀。这用于允许识别编码文件,其编码和类型由相同的 extensions 表示。例如,.tgzextensionsMap 到.tar.gz以允许分别识别编码和类型。
  • mimetypes. encodings_map

    • 将文件名 extensionsMap 到编码类型的字典。
  • mimetypes. types_map

    • 将文件名 extensionsMap 到 MIME 类型的字典。
  • mimetypes. common_types

    • 将文件名 extensionsMap 到非标准但常见的 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 类型数据库。默认情况下,它提供对与此模块其余部分相同数据库的访问。初始数据库是该模块提供的数据库的副本,可以pass使用read()readfp()方法将其他mime.types样式的文件加载到数据库中来进行扩展。如果不需要默认数据,则在加载其他数据之前也可以清除 Map 字典。

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

  • suffix_map

    • 字典 Map 后缀到后缀。这用于允许识别编码文件,其编码和类型由相同的 extensions 表示。例如,.tgzextensionsMap 到.tar.gz以允许分别识别编码和类型。最初是模块中定义的全局suffix_map的副本。
  • encodings_map

    • 将文件名 extensionsMap 到编码类型的字典。最初是模块中定义的全局encodings_map的副本。
  • types_map

    • Tuples 包含两个字典,将文件 extensionsMap 到 MIME 类型:第一个字典用于非标准类型,第二个字典用于标准类型。它们由common_typestypes_map初始化。
  • types_map_inv

    • Tuples 包含两个字典,将 MIME 类型 Map 到文件 extensions 列表:第一个字典用于非标准类型,第二个字典用于标准类型。它们由common_typestypes_map初始化。
  • guess_extension(* type strict = True *)

  • guess_type(* url strict = True *)

    • guess_type()函数类似,使用存储为对象一部分的表。
  • guess_all_extensions(* type strict = True *)

  • 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,则信息将添加到标准类型列表中,否则将添加到非标准类型列表中。

2.7 版的新Function。