uTools-Manuals/docs/python/mimetypes.html
2019-04-21 11:50:48 +08:00

11 lines
23 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="body" role="main"><div class="section" id="module-mimetypes"><h1><span class="yiyi-st" id="yiyi-10">19.5. <a class="reference internal" href="#module-mimetypes" title="mimetypes: Mapping of filename extensions to MIME types."><code class="xref py py-mod docutils literal"><span class="pre">mimetypes</span></code></a> - 将文件名映射到MIME类型</span></h1><p><span class="yiyi-st" id="yiyi-11"><strong>源代码:</strong> <a class="reference external" href="https://hg.python.org/cpython/file/3.5/Lib/mimetypes.py">Lib / mimetypes.py</a></span></p><p><span class="yiyi-st" id="yiyi-12"><a class="reference internal" href="#module-mimetypes" title="mimetypes: Mapping of filename extensions to MIME types."><code class="xref py py-mod docutils literal"><span class="pre">mimetypes</span></code></a>模块在文件名或URL和文件扩展名关联的MIME类型之间进行转换。</span><span class="yiyi-st" id="yiyi-13">提供从文件名到MIME类型和从MIME类型到文件扩展名的转换后面的转换不支持编码。</span></p><p><span class="yiyi-st" id="yiyi-14">该模块提供一个类和多个方便功能。</span><span class="yiyi-st" id="yiyi-15">函数是这个模块的正常接口,但是一些应用程序也可能对类感兴趣。</span></p><p><span class="yiyi-st" id="yiyi-16">下面描述的功能提供了该模块的主要接口。</span><span class="yiyi-st" id="yiyi-17">如果模块尚未初始化,如果它们依赖于信息<a class="reference internal" href="#mimetypes.init" title="mimetypes.init"><code class="xref py py-func docutils literal"><span class="pre">init()</span></code></a>设置,则它们将调用<a class="reference internal" href="#mimetypes.init" title="mimetypes.init"><code class="xref py py-func docutils literal"><span class="pre">init()</span></code></a></span></p><dl class="function"><dt id="mimetypes.guess_type"><span class="yiyi-st" id="yiyi-18"> <code class="descclassname">mimetypes.</code><code class="descname">guess_type</code><span class="sig-paren">(</span><em>url</em>, <em>strict=True</em><span class="sig-paren">)</span></span></dt><dd><p id="index-1"><span class="yiyi-st" id="yiyi-19">根据文件名或URL<em>url</em>给出)猜测文件类型。</span><span class="yiyi-st" id="yiyi-20">返回值为元组<code class="docutils literal"><span class="pre">(类型,</span> <span class="pre">编码)</span></code>其中<em>类型</em><code class="docutils literal"><span class="pre">None</span></code>如果类型不能猜测(缺少或未知的后缀)或者一个形式为<code class="docutils literal"><span class="pre">'type/subtype'</span></code>的字符串可用于MIME <em class="mailheader">content-type</em></span></p><p><span class="yiyi-st" id="yiyi-21"><em>编码</em><code class="docutils literal"><span class="pre">None</span></code>,无编码或用于编码的程序名称。</span><span class="yiyi-st" id="yiyi-22"><strong class="program">compress</strong><strong class="program">gzip</strong>)。</span><span class="yiyi-st" id="yiyi-23">该编码适合用作<em class="mailheader">Content-Encoding t&gt;头,<strong>而不是</strong>作为<em class="mailheader">Content-Transfer-Encoding</em>头。</em></span><span class="yiyi-st" id="yiyi-24">映射是表驱动的。</span><span class="yiyi-st" id="yiyi-25">编码后缀区分大小写;类型后缀首先尝试敏感,然后情况不敏感。</span></p><p><span class="yiyi-st" id="yiyi-26">可选的<em>strict</em>参数是一个标志指定已知MIME类型的列表是否仅限于使用IANA注册的官方类型<a class="reference external" href="https://www.iana.org/assignments/media-types/media-types.xhtml"></a></span><span class="yiyi-st" id="yiyi-27"><em>严格</em><code class="docutils literal"><span class="pre">True</span></code>默认值仅支持IANA类型<em>严格</em><code class="docutils literal"><span class="pre">False</span></code>还会识别一些其他非标准但常用的MIME类型。</span></p></dd></dl><dl class="function"><dt id="mimetypes.guess_all_extensions"><span class="yiyi-st" id="yiyi-28"> <code class="descclassname">mimetypes.</code><code class="descname">guess_all_extensions</code><span class="sig-paren">(</span><em>type</em>, <em>strict=True</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-29">根据由<em>类型</em>给出的MIME类型猜测文件的扩展名。</span><span class="yiyi-st" id="yiyi-30">返回值是给出所有可能的文件扩展名的字符串列表,包括前导点(<code class="docutils literal"><span class="pre">'.'</span></code>)。</span><span class="yiyi-st" id="yiyi-31">这些扩展不能保证与任何特定数据流相关联,但会通过<a class="reference internal" href="#mimetypes.guess_type" title="mimetypes.guess_type"><code class="xref py py-func docutils literal"><span class="pre">guess_type()</span></code></a>映射到<em>类型</em>的MIME类型。</span></p><p><span class="yiyi-st" id="yiyi-32">可选的<em>strict</em>参数与<a class="reference internal" href="#mimetypes.guess_type" title="mimetypes.guess_type"><code class="xref py py-func docutils literal"><span class="pre">guess_type()</span></code></a>函数具有相同的含义。</span></p></dd></dl><dl class="function"><dt id="mimetypes.guess_extension"><span class="yiyi-st" id="yiyi-33"> <code class="descclassname">mimetypes.</code><code class="descname">guess_extension</code><span class="sig-paren">(</span><em>type</em>, <em>strict=True</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-34">根据由<em>类型</em>给出的MIME类型猜测文件的扩展名。</span><span class="yiyi-st" id="yiyi-35">返回值是一个给出文件名扩展名的字符串,包括前导点(<code class="docutils literal"><span class="pre">'.'</span></code>)。</span><span class="yiyi-st" id="yiyi-36">该扩展不能保证已与任何特定数据流相关联,但将通过<a class="reference internal" href="#mimetypes.guess_type" title="mimetypes.guess_type"><code class="xref py py-func docutils literal"><span class="pre">guess_type()</span></code></a>映射到MIME类型<em>类型</em></span><span class="yiyi-st" id="yiyi-37">如果未能为<em>类型</em>猜出扩展名,则返回<code class="docutils literal"><span class="pre">None</span></code></span></p><p><span class="yiyi-st" id="yiyi-38">可选的<em>strict</em>参数与<a class="reference internal" href="#mimetypes.guess_type" title="mimetypes.guess_type"><code class="xref py py-func docutils literal"><span class="pre">guess_type()</span></code></a>函数具有相同的含义。</span></p></dd></dl><p><span class="yiyi-st" id="yiyi-39">一些附加功能和数据项可用于控制模块的行为。</span></p><dl class="function"><dt id="mimetypes.init"><span class="yiyi-st" id="yiyi-40"> <code class="descclassname">mimetypes.</code><code class="descname">init</code><span class="sig-paren">(</span><em>files=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-41">初始化内部数据结构。</span><span class="yiyi-st" id="yiyi-42">如果给定,<em>文件</em>必须是应用于扩充默认类型映射的文件名的序列。</span><span class="yiyi-st" id="yiyi-43">如果省略,要使用的文件名取自<a class="reference internal" href="#mimetypes.knownfiles" title="mimetypes.knownfiles"><code class="xref py py-const docutils literal"><span class="pre">knownfiles</span></code></a>在Windows上当前注册表设置已加载。</span><span class="yiyi-st" id="yiyi-44"><em>文件</em><a class="reference internal" href="#mimetypes.knownfiles" title="mimetypes.knownfiles"><code class="xref py py-const docutils literal"><span class="pre">knownfiles</span></code></a>中命名的每个文件优先于在其之前命名的文件。</span><span class="yiyi-st" id="yiyi-45">重复调用<a class="reference internal" href="#mimetypes.init" title="mimetypes.init"><code class="xref py py-func docutils literal"><span class="pre">init()</span></code></a></span></p><p><span class="yiyi-st" id="yiyi-46"><em>文件</em>指定空列表将防止应用系统默认值:只有内建列表中会显示众所周知的值。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-47"><span class="versionmodified">在版本3.2中更改:</span>以前Windows注册表设置被忽略。</span></p></div></dd></dl><dl class="function"><dt id="mimetypes.read_mime_types"><span class="yiyi-st" id="yiyi-48"> <code class="descclassname">mimetypes.</code><code class="descname">read_mime_types</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-49">加载文件<em>filename</em>中给出的类型映射(如果存在)。</span><span class="yiyi-st" id="yiyi-50">类型映射作为将文件扩展名(包括前导点(<code class="docutils literal"><span class="pre">'.'</span></code>))映射到形式为<code class="docutils literal"><span class="pre">'type/subtype'</span></code>的字符串的字典返回。</span><span class="yiyi-st" id="yiyi-51">如果文件<em>filename</em>不存在或无法读取,则会返回<code class="docutils literal"><span class="pre">None</span></code></span></p></dd></dl><dl class="function"><dt id="mimetypes.add_type"><span class="yiyi-st" id="yiyi-52"> <code class="descclassname">mimetypes.</code><code class="descname">add_type</code><span class="sig-paren">(</span><em>type</em>, <em>ext</em>, <em>strict=True</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-53">将MIME类型<em>类型</em>的映射添加到扩展<em>ext</em></span><span class="yiyi-st" id="yiyi-54">当扩展名已知时,新类型将替换旧的扩展名。</span><span class="yiyi-st" id="yiyi-55">当类型已知时,扩展将添加到已知扩展的列表中。</span></p><p><span class="yiyi-st" id="yiyi-56"><em>strict</em><code class="docutils literal"><span class="pre">True</span></code>默认值映射将添加到官方MIME类型否则添加到非标准MIME类型。</span></p></dd></dl><dl class="data"><dt id="mimetypes.inited"><span class="yiyi-st" id="yiyi-57"> <code class="descclassname">mimetypes.</code><code class="descname">inited</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-58">指示全局数据结构是否已被初始化的标志。</span><span class="yiyi-st" id="yiyi-59"><a class="reference internal" href="#mimetypes.init" title="mimetypes.init"><code class="xref py py-func docutils literal"><span class="pre">init()</span></code></a>设置为<code class="docutils literal"><span class="pre">True</span></code></span></p></dd></dl><dl class="data"><dt id="mimetypes.knownfiles"><span class="yiyi-st" id="yiyi-60"> <code class="descclassname">mimetypes.</code><code class="descname">knownfiles</code></span></dt><dd><p id="index-2"><span class="yiyi-st" id="yiyi-61">通常安装的类型映射文件名列表。</span><span class="yiyi-st" id="yiyi-62">这些文件通常命名为<code class="file docutils literal"><span class="pre">mime.types</span></code>,并且由不同的软件包安装在不同的位置。</span></p></dd></dl><dl class="data"><dt id="mimetypes.suffix_map"><span class="yiyi-st" id="yiyi-63"> <code class="descclassname">mimetypes.</code><code class="descname">suffix_map</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-64">字典映射后缀到后缀。</span><span class="yiyi-st" id="yiyi-65">这用于允许识别编码和类型由相同扩展名指示的编码文件。</span><span class="yiyi-st" id="yiyi-66">例如,<code class="file docutils literal"><span class="pre">.tgz</span></code>扩展映射到<code class="file docutils literal"><span class="pre">.tar.gz</span></code>,以允许单独识别编码和类型。</span></p></dd></dl><dl class="data"><dt id="mimetypes.encodings_map"><span class="yiyi-st" id="yiyi-67"> <code class="descclassname">mimetypes.</code><code class="descname">encodings_map</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-68">将文件扩展名映射到编码类型。</span></p></dd></dl><dl class="data"><dt id="mimetypes.types_map"><span class="yiyi-st" id="yiyi-69"> <code class="descclassname">mimetypes.</code><code class="descname">types_map</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-70">字典映射MIME类型的文件扩展名。</span></p></dd></dl><dl class="data"><dt id="mimetypes.common_types"><span class="yiyi-st" id="yiyi-71"> <code class="descclassname">mimetypes.</code><code class="descname">common_types</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-72"></span></p></dd></dl><p><span class="yiyi-st" id="yiyi-73">模块的示例用法:</span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">mimetypes</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mimetypes</span><span class="o">.</span><span class="n">init</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mimetypes</span><span class="o">.</span><span class="n">knownfiles</span>
<span class="go">['/etc/mime.types', '/etc/httpd/mime.types', ... ]</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mimetypes</span><span class="o">.</span><span class="n">suffix_map</span><span class="p">[</span><span class="s1">'.tgz'</span><span class="p">]</span>
<span class="go">'.tar.gz'</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mimetypes</span><span class="o">.</span><span class="n">encodings_map</span><span class="p">[</span><span class="s1">'.gz'</span><span class="p">]</span>
<span class="go">'gzip'</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mimetypes</span><span class="o">.</span><span class="n">types_map</span><span class="p">[</span><span class="s1">'.tgz'</span><span class="p">]</span>
<span class="go">'application/x-tar-gz'</span>
</code></pre><div class="section" id="mimetypes-objects"><h2><span class="yiyi-st" id="yiyi-74">19.5.1. </span><span class="yiyi-st" id="yiyi-75">MimeTypes Objects</span></h2><p><span class="yiyi-st" id="yiyi-76"><a class="reference internal" href="#mimetypes.MimeTypes" title="mimetypes.MimeTypes"><code class="xref py py-class docutils literal"><span class="pre">MimeTypes</span></code></a>类可能对可能需要多个MIME类型数据库的应用程序有用它提供类似于<a class="reference internal" href="#module-mimetypes" title="mimetypes: Mapping of filename extensions to MIME types."><code class="xref py py-mod docutils literal"><span class="pre">mimetypes</span></code></a></span></p><dl class="class"><dt id="mimetypes.MimeTypes"><span class="yiyi-st" id="yiyi-77"> <em class="property">class </em><code class="descclassname">mimetypes.</code><code class="descname">MimeTypes</code><span class="sig-paren">(</span><em>filenames=()</em>, <em>strict=True</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-78">此类表示MIME类型数据库。</span><span class="yiyi-st" id="yiyi-79">默认情况下,它提供对与此模块的其余部分相同的数据库的访问。</span><span class="yiyi-st" id="yiyi-80">The initial database is a copy of that provided by the module, and may be extended by loading additional <code class="file docutils literal"><span class="pre">mime.types</span></code>-style files into the database using the <a class="reference internal" href="#mimetypes.MimeTypes.read" title="mimetypes.MimeTypes.read"><code class="xref py py-meth docutils literal"><span class="pre">read()</span></code></a> or <a class="reference internal" href="#mimetypes.MimeTypes.readfp" title="mimetypes.MimeTypes.readfp"><code class="xref py py-meth docutils literal"><span class="pre">readfp()</span></code></a> methods. </span><span class="yiyi-st" id="yiyi-81">如果不需要默认数据,则也可以在加载附加数据之前清除映射字典。</span></p><p><span class="yiyi-st" id="yiyi-82">可选的<em>文件名</em>参数可用于使附加文件加载到默认数据库的“顶部”。</span></p></dd></dl><dl class="attribute"><dt id="mimetypes.MimeTypes.suffix_map"><span class="yiyi-st" id="yiyi-83"> <code class="descclassname">MimeTypes.</code><code class="descname">suffix_map</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-84">字典映射后缀到后缀。</span><span class="yiyi-st" id="yiyi-85">这用于允许识别编码和类型由相同扩展名指示的编码文件。</span><span class="yiyi-st" id="yiyi-86">例如,<code class="file docutils literal"><span class="pre">.tgz</span></code>扩展映射到<code class="file docutils literal"><span class="pre">.tar.gz</span></code>,以允许单独识别编码和类型。</span><span class="yiyi-st" id="yiyi-87">这最初是模块中定义的全局<a class="reference internal" href="#mimetypes.suffix_map" title="mimetypes.suffix_map"><code class="xref py py-data docutils literal"><span class="pre">suffix_map</span></code></a>的副本。</span></p></dd></dl><dl class="attribute"><dt id="mimetypes.MimeTypes.encodings_map"><span class="yiyi-st" id="yiyi-88"> <code class="descclassname">MimeTypes.</code><code class="descname">encodings_map</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-89">将文件扩展名映射到编码类型。</span><span class="yiyi-st" id="yiyi-90">这最初是模块中定义的全局<a class="reference internal" href="#mimetypes.encodings_map" title="mimetypes.encodings_map"><code class="xref py py-data docutils literal"><span class="pre">encodings_map</span></code></a>的副本。</span></p></dd></dl><dl class="attribute"><dt id="mimetypes.MimeTypes.types_map"><span class="yiyi-st" id="yiyi-91"> <code class="descclassname">MimeTypes.</code><code class="descname">types_map</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-92">Tuple包含两个字典将文件扩展名映射到MIME类型第一个字典用于非标准类型第二个字典用于标准类型。</span><span class="yiyi-st" id="yiyi-93">它们由<a class="reference internal" href="#mimetypes.common_types" title="mimetypes.common_types"><code class="xref py py-data docutils literal"><span class="pre">common_types</span></code></a><a class="reference internal" href="#mimetypes.types_map" title="mimetypes.types_map"><code class="xref py py-data docutils literal"><span class="pre">types_map</span></code></a>初始化。</span></p></dd></dl><dl class="attribute"><dt id="mimetypes.MimeTypes.types_map_inv"><span class="yiyi-st" id="yiyi-94"> <code class="descclassname">MimeTypes.</code><code class="descname">types_map_inv</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-95">Tuple包含两个字典将MIME类型映射到文件扩展名列表第一个字典用于非标准类型第二个字典用于标准类型。</span><span class="yiyi-st" id="yiyi-96">它们由<a class="reference internal" href="#mimetypes.common_types" title="mimetypes.common_types"><code class="xref py py-data docutils literal"><span class="pre">common_types</span></code></a><a class="reference internal" href="#mimetypes.types_map" title="mimetypes.types_map"><code class="xref py py-data docutils literal"><span class="pre">types_map</span></code></a>初始化。</span></p></dd></dl><dl class="method"><dt id="mimetypes.MimeTypes.guess_extension"><span class="yiyi-st" id="yiyi-97"> <code class="descclassname">MimeTypes.</code><code class="descname">guess_extension</code><span class="sig-paren">(</span><em>type</em>, <em>strict=True</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-98">类似于<a class="reference internal" href="#mimetypes.guess_extension" title="mimetypes.guess_extension"><code class="xref py py-func docutils literal"><span class="pre">guess_extension()</span></code></a>函数,使用作为对象的一部分存储的表。</span></p></dd></dl><dl class="method"><dt id="mimetypes.MimeTypes.guess_type"><span class="yiyi-st" id="yiyi-99"> <code class="descclassname">MimeTypes.</code><code class="descname">guess_type</code><span class="sig-paren">(</span><em>url</em>, <em>strict=True</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-100">类似于<a class="reference internal" href="#mimetypes.guess_type" title="mimetypes.guess_type"><code class="xref py py-func docutils literal"><span class="pre">guess_type()</span></code></a>函数,使用作为对象的一部分存储的表。</span></p></dd></dl><dl class="method"><dt id="mimetypes.MimeTypes.guess_all_extensions"><span class="yiyi-st" id="yiyi-101"> <code class="descclassname">MimeTypes.</code><code class="descname">guess_all_extensions</code><span class="sig-paren">(</span><em>type</em>, <em>strict=True</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-102">类似于<a class="reference internal" href="#mimetypes.guess_all_extensions" title="mimetypes.guess_all_extensions"><code class="xref py py-func docutils literal"><span class="pre">guess_all_extensions()</span></code></a>函数,使用作为对象的一部分存储的表。</span></p></dd></dl><dl class="method"><dt id="mimetypes.MimeTypes.read"><span class="yiyi-st" id="yiyi-103"> <code class="descclassname">MimeTypes.</code><code class="descname">read</code><span class="sig-paren">(</span><em>filename</em>, <em>strict=True</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-104">从名为<em>filename</em>的文件加载MIME信息。</span><span class="yiyi-st" id="yiyi-105">这使用<a class="reference internal" href="#mimetypes.MimeTypes.readfp" title="mimetypes.MimeTypes.readfp"><code class="xref py py-meth docutils literal"><span class="pre">readfp()</span></code></a>来解析文件。</span></p><p><span class="yiyi-st" id="yiyi-106">如果<em>严格</em><code class="docutils literal"><span class="pre">True</span></code>,信息将被添加到标准类型的列表,否则添加到非标准类型的列表。</span></p></dd></dl><dl class="method"><dt id="mimetypes.MimeTypes.readfp"><span class="yiyi-st" id="yiyi-107"> <code class="descclassname">MimeTypes.</code><code class="descname">readfp</code><span class="sig-paren">(</span><em>fp</em>, <em>strict=True</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-108">从打开的文件<em>fp</em>加载MIME类型信息。</span><span class="yiyi-st" id="yiyi-109">该文件必须具有标准<code class="file docutils literal"><span class="pre">mime.types</span></code>文件的格式。</span></p><p><span class="yiyi-st" id="yiyi-110">如果<em>严格</em><code class="docutils literal"><span class="pre">True</span></code>,则信息将添加到标准类型列表中,否则添加到非标准类型列表中。</span></p></dd></dl><dl class="method"><dt id="mimetypes.MimeTypes.read_windows_registry"><span class="yiyi-st" id="yiyi-111"> <code class="descclassname">MimeTypes.</code><code class="descname">read_windows_registry</code><span class="sig-paren">(</span><em>strict=True</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-112">从Windows注册表加载MIME类型信息。</span><span class="yiyi-st" id="yiyi-113">可用性Windows。</span></p><p><span class="yiyi-st" id="yiyi-114">如果<em>严格</em><code class="docutils literal"><span class="pre">True</span></code>,则信息将添加到标准类型列表中,否则添加到非标准类型列表中。</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-115"><span class="versionmodified">版本3.2中的新功能。</span></span></p></div></dd></dl></div></div></div>