擅长:python、mysql、java
<p>问题1。无论是<code>subprocess.PIPE</code>还是<code>PIPE</code>,它们引用的是同一个符号,即<code>subprocess</code>模块中的<code>PIPE</code>。以下内容相同:</p>
<pre><code># Version 1
import subprocess
proc = subprocess.Popen(['ls'], stdout=subprocess.PIPE)
output = proc.communicate()[0]
# Version 2
from subprocess import PIPE, Popen
proc = Popen(['ls'], stdout=PIPE)
output = proc.communicate()[0]
</code></pre>
<p>问题2。<code>communicate()</code>实际上正在将输入发送到p1的STDIN流中。虽然在调用<code>Popen</code>构造函数时,子进程确实是活动的并在运行,但是在您的特定情况下,<code>convert</code>实用程序似乎不会做任何事情,除非它通过STDIN真正接收到内容。如果它是一个交互性较差的命令(例如<code>ls</code>),那么它不会等到<code>communicate()</code>来做任何事情。在</p>
<p>更新内容
在您的例子中,不要使用<code>communicate</code>将输入发送到p1,而是尝试以下方法:</p>
^{pr2}$
<p>看看你运气好不好。在</p>