擅长:python、mysql、java
<p>您看到的是标准错误输出,而不是标准输出。Stderr重定向由<code>stderr</code>构造函数参数控制。它默认为<code>None</code>,这意味着没有重定向发生,这就是为什么您看到这个输出。</p>
<p>通常保持stderr输出是个好主意,因为它有助于调试,并且不会影响正常的重定向(例如,<code>|</code>和<code>></code>shell重定向默认不会捕获stderr)。但是,您可以将其重定向到其他位置,方法与执行stdout相同:</p>
<pre><code>sp = subprocess.Popen(listargs[0], shell=False,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = sp.communicate()
</code></pre>
<p>或者你可以直接放下武器:</p>
<pre><code>devnull = open(os.devnull, 'wb') #python >= 2.4
sp = subprocess.Popen(listargs[0], shell=False,
stdout=subprocess.PIPE, stderr=devnull)
#python 3.x:
sp = subprocess.Popen(listargs[0], shell=False
stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
</code></pre>