2019-04-21 11:50:48 +08:00

9 lines
8.1 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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-pipes"><h1><span class="yiyi-st" id="yiyi-10">35.10. <a class="reference internal" href="#module-pipes" title="pipes: A Python interface to Unix shell pipelines. (Unix)"><code class="xref py py-mod docutils literal"><span class="pre">pipes</span></code></a> - shell管道接口</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/pipes.py">Lib / pipes.py</a></span></p><p><span class="yiyi-st" id="yiyi-12"><a class="reference internal" href="#module-pipes" title="pipes: A Python interface to Unix shell pipelines. (Unix)"><code class="xref py py-mod docutils literal"><span class="pre">pipes</span></code></a>模块定义了抽象<em>管道概念的类 t&gt; - 从一个文件到另一个文件的转换器序列。</em></span></p><p><span class="yiyi-st" id="yiyi-13">Because the module uses <strong class="program">/bin/sh</strong> command lines, a POSIX or compatible shell for <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> and <a class="reference internal" href="os.html#os.popen" title="os.popen"><code class="xref py py-func docutils literal"><span class="pre">os.popen()</span></code></a> is required.</span></p><p><span class="yiyi-st" id="yiyi-14"><a class="reference internal" href="#module-pipes" title="pipes: A Python interface to Unix shell pipelines. (Unix)"><code class="xref py py-mod docutils literal"><span class="pre">pipes</span></code></a>模块定义了以下类:</span></p><dl class="class"><dt id="pipes.Template"><span class="yiyi-st" id="yiyi-15"> <em class="property">class </em><code class="descclassname">pipes.</code><code class="descname">Template</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-16">管道的抽象。</span></p></dd></dl><p><span class="yiyi-st" id="yiyi-17">例:</span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">pipes</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">t</span> <span class="o">=</span> <span class="n">pipes</span><span class="o">.</span><span class="n">Template</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">t</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'tr a-z A-Z'</span><span class="p">,</span> <span class="s1">'--'</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s1">'pipefile'</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'hello world'</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="nb">open</span><span class="p">(</span><span class="s1">'pipefile'</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
<span class="go">'HELLO WORLD'</span>
</code></pre><div class="section" id="template-objects"><h2><span class="yiyi-st" id="yiyi-18">35.10.1. </span><span class="yiyi-st" id="yiyi-19">Template Objects</span></h2><p><span class="yiyi-st" id="yiyi-20">模板对象方法如下:</span></p><dl class="method"><dt id="pipes.Template.reset"><span class="yiyi-st" id="yiyi-21"> <code class="descclassname">Template.</code><code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-22">将流水线模板恢复为其初始状态。</span></p></dd></dl><dl class="method"><dt id="pipes.Template.clone"><span class="yiyi-st" id="yiyi-23"> <code class="descclassname">Template.</code><code class="descname">clone</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-24">返回一个新的,等效的流水线模板。</span></p></dd></dl><dl class="method"><dt id="pipes.Template.debug"><span class="yiyi-st" id="yiyi-25"> <code class="descclassname">Template.</code><code class="descname">debug</code><span class="sig-paren">(</span><em>flag</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-26">如果<em>标志</em>为真,请打开调试。</span><span class="yiyi-st" id="yiyi-27">否则,关闭调试。</span><span class="yiyi-st" id="yiyi-28">当调试打开时打印要执行的命令并且给予shell <code class="docutils literal"><span class="pre">set</span> <span class="pre">-x</span></code>命令更详细。</span></p></dd></dl><dl class="method"><dt id="pipes.Template.append"><span class="yiyi-st" id="yiyi-29"> <code class="descclassname">Template.</code><code class="descname">append</code><span class="sig-paren">(</span><em>cmd</em>, <em>kind</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-30">在结尾添加新操作。</span><span class="yiyi-st" id="yiyi-31"><em>cmd</em>变量必须是有效的bourne shell命令。</span><span class="yiyi-st" id="yiyi-32"><em>种类</em>变量​​由两个字母组成。</span></p><p><span class="yiyi-st" id="yiyi-33">第一个字母可以是<code class="docutils literal"><span class="pre">'-'</span></code>(这意味着命令读取其标准输入),<code class="docutils literal"><span class="pre">'f'</span></code>(这意味着命令读取命令上的给定文件线)或<code class="docutils literal"><span class="pre">'.'</span></code></span><span class="yiyi-st" id="yiyi-34">(这意味着命令不读取输入,因此必须是第一个。)</span></p><p><span class="yiyi-st" id="yiyi-35">类似地,第二个字母可以是<code class="docutils literal"><span class="pre">'-'</span></code>(意味着命令写入标准输出),<code class="docutils literal"><span class="pre">'f'</span></code>(这意味着命令将文件写入命令行)或<code class="docutils literal"><span class="pre">'.'</span></code></span><span class="yiyi-st" id="yiyi-36">(这意味着命令不会写任何东西,因此必须是最后一个。)</span></p></dd></dl><dl class="method"><dt id="pipes.Template.prepend"><span class="yiyi-st" id="yiyi-37"> <code class="descclassname">Template.</code><code class="descname">prepend</code><span class="sig-paren">(</span><em>cmd</em>, <em>kind</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-38">在开始时添加新操作。</span><span class="yiyi-st" id="yiyi-39">有关参数的说明,请参见<a class="reference internal" href="#pipes.Template.append" title="pipes.Template.append"><code class="xref py py-meth docutils literal"><span class="pre">append()</span></code></a></span></p></dd></dl><dl class="method"><dt id="pipes.Template.open"><span class="yiyi-st" id="yiyi-40"> <code class="descclassname">Template.</code><code class="descname">open</code><span class="sig-paren">(</span><em>file</em>, <em>mode</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-41">返回类似文件的对象,打开<em>文件</em>,但从管道读取或写入。</span><span class="yiyi-st" id="yiyi-42">注意,可以仅给出<code class="docutils literal"><span class="pre">'r'</span></code><code class="docutils literal"><span class="pre">'w'</span></code>中的一个。</span></p></dd></dl><dl class="method"><dt id="pipes.Template.copy"><span class="yiyi-st" id="yiyi-43"> <code class="descclassname">Template.</code><code class="descname">copy</code><span class="sig-paren">(</span><em>infile</em>, <em>outfile</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-44">通过管道将<em>infile</em>复制到<em>outfile</em></span></p></dd></dl></div></div></div>