mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 23:14:06 +08:00
11 lines
23 KiB
HTML
11 lines
23 KiB
HTML
<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>头,<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">>>> </span><span class="kn">import</span> <span class="nn">mimetypes</span>
|
||
<span class="gp">>>> </span><span class="n">mimetypes</span><span class="o">.</span><span class="n">init</span><span class="p">()</span>
|
||
<span class="gp">>>> </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">>>> </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">>>> </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">>>> </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> |