mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 23:14:06 +08:00
5 lines
7.4 KiB
HTML
5 lines
7.4 KiB
HTML
<div class="body" role="main"><div class="section" id="module-mailcap"><h1><span class="yiyi-st" id="yiyi-10">19.3. <a class="reference internal" href="#module-mailcap" title="mailcap: Mailcap file handling."><code class="xref py py-mod docutils literal"><span class="pre">mailcap</span></code></a> - Mailcap文件处理</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/mailcap.py">Lib / mailcap.py</a></span></p><p><span class="yiyi-st" id="yiyi-12">Mailcap文件用于配置MIME感知应用程序(如邮件阅读器和Web浏览器)对具有不同MIME类型的文件的反应。</span><span class="yiyi-st" id="yiyi-13">(名称“mailcap”源自短语“邮件功能”。)</span><span class="yiyi-st" id="yiyi-14">例如,mailcap文件可能包含像<code class="docutils literal"><span class="pre">video / mpeg;</span> <span class="pre">xmpeg</span> <span class="pre">%s</span></code>的行。</span><span class="yiyi-st" id="yiyi-15">然后,如果用户遇到MIME类型为<em class="mimetype">video / mpeg</em>的电子邮件或Web文档,则<code class="docutils literal"><span class="pre">%s</span></code>将替换为文件名(通常属于临时文件)和<strong class="program">xmpeg</strong>程序可以自动启动以查看文件。</span></p><p><span class="yiyi-st" id="yiyi-16">mailcap格式记录在<span class="target" id="index-0"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc1524.html"><strong>RFC 1524</strong></a>“用于多媒体邮件格式信息的用户代理配置机制”中,但不是Internet标准。</span><span class="yiyi-st" id="yiyi-17">但是,大多数Unix系统都支持mailcap文件。</span></p><dl class="function"><dt id="mailcap.findmatch"><span class="yiyi-st" id="yiyi-18"> <code class="descclassname">mailcap.</code><code class="descname">findmatch</code><span class="sig-paren">(</span><em>caps</em>, <em>MIMEtype</em>, <em>key='view'</em>, <em>filename='/dev/null'</em>, <em>plist=[]</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-19">返回一个2元组;第一个元素是包含要执行的命令行的字符串(可以传递到<a class="reference internal" href="os.html#os.system" title="os.system"><code class="xref py py-func docutils literal"><span class="pre">os.system()</span></code></a>),第二个元素是给定MIME类型的mailcap条目。</span><span class="yiyi-st" id="yiyi-20">如果未找到匹配的MIME类型,则返回<code class="docutils literal"><span class="pre">(无,</span> <span class="pre">无)</span></code>。</span></p><p><span class="yiyi-st" id="yiyi-21"><em>键</em>是所需字段的名称,表示要执行的活动类型;默认值是'view',因为在最常见的情况下,你只需要查看MIME类型数据的主体。</span><span class="yiyi-st" id="yiyi-22">如果要创建给定MIME类型的新实体或更改现有实体数据,其他可能的值可能是“compose”和“edit”。</span><span class="yiyi-st" id="yiyi-23">有关这些字段的完整列表,请参见<span class="target" id="index-1"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc1524.html"><strong>RFC 1524</strong></a>。</span></p><p><span class="yiyi-st" id="yiyi-24"><em>filename</em>是要替换命令行中<code class="docutils literal"><span class="pre">%s</span></code>的文件名;默认值是<code class="docutils literal"><span class="pre">'/dev/null'</span></code>,这几乎肯定不是你想要的,所以通常你会通过指定一个文件名来覆盖它。</span></p><p><span class="yiyi-st" id="yiyi-25"><em>plist</em>可以是包含命名参数的列表;默认值只是一个空列表。</span><span class="yiyi-st" id="yiyi-26">列表中的每个条目必须是包含参数名称,等号(<code class="docutils literal"><span class="pre">'='</span></code>)和参数值的字符串。</span><span class="yiyi-st" id="yiyi-27">Mailcap条目可以包含诸如<code class="docutils literal"><span class="pre">%{foo}</span></code>的命名参数,它将被名为“foo”的参数的值替换。</span><span class="yiyi-st" id="yiyi-28">For example, if the command line <code class="docutils literal"><span class="pre">showpartial</span> <span class="pre">%{id}</span> <span class="pre">%{number}</span> <span class="pre">%{total}</span></code> was in a mailcap file, and <em>plist</em> was set to <code class="docutils literal"><span class="pre">['id=1',</span> <span class="pre">'number=2',</span> <span class="pre">'total=3']</span></code>, the resulting command line would be <code class="docutils literal"><span class="pre">'showpartial</span> <span class="pre">1</span> <span class="pre">2</span> <span class="pre">3'</span></code>.</span></p><p><span class="yiyi-st" id="yiyi-29">在mailcap文件中,可以可选地指定“测试”字段以测试某些外部条件(例如机器架构或正在使用的窗口系统),以确定是否应用邮件帽线。</span><span class="yiyi-st" id="yiyi-30"><a class="reference internal" href="#mailcap.findmatch" title="mailcap.findmatch"><code class="xref py py-func docutils literal"><span class="pre">findmatch()</span></code></a>将自动检查这些条件,如果检查失败,则跳过该条目。</span></p></dd></dl><dl class="function"><dt id="mailcap.getcaps"><span class="yiyi-st" id="yiyi-31"> <code class="descclassname">mailcap.</code><code class="descname">getcaps</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-32">返回将MIME类型映射到mailcap文件条目列表的字典。</span><span class="yiyi-st" id="yiyi-33">此字典必须传递到<a class="reference internal" href="#mailcap.findmatch" title="mailcap.findmatch"><code class="xref py py-func docutils literal"><span class="pre">findmatch()</span></code></a>函数。</span><span class="yiyi-st" id="yiyi-34">条目存储为字典列表,但不必知道该表示的细节。</span></p><p><span class="yiyi-st" id="yiyi-35">该信息衍生自系统上找到的所有mailcap文件。</span><span class="yiyi-st" id="yiyi-36">Settings in the user’s mailcap file <code class="file docutils literal"><span class="pre">$HOME/.mailcap</span></code> will override settings in the system mailcap files <code class="file docutils literal"><span class="pre">/etc/mailcap</span></code>, <code class="file docutils literal"><span class="pre">/usr/etc/mailcap</span></code>, and <code class="file docutils literal"><span class="pre">/usr/local/etc/mailcap</span></code>.</span></p></dd></dl><p><span class="yiyi-st" id="yiyi-37">示例用法:</span></p><pre><code class="language-python"><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">mailcap</span>
|
||
<span class="gp">>>> </span><span class="n">d</span> <span class="o">=</span> <span class="n">mailcap</span><span class="o">.</span><span class="n">getcaps</span><span class="p">()</span>
|
||
<span class="gp">>>> </span><span class="n">mailcap</span><span class="o">.</span><span class="n">findmatch</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="s1">'video/mpeg'</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="s1">'tmp1223'</span><span class="p">)</span>
|
||
<span class="go">('xmpeg tmp1223', {'view': 'xmpeg %s'})</span>
|
||
</code></pre></div></div> |