擅长:python、mysql、java
<p>如果您不需要处理代码中的输出,只需要在它发生时向用户显示它(从您的Q中看不清楚,从您自己的答案来看似乎是这样),最简单的方法是:</p>
<pre><code>rc = subprocess.call(
["cmd", "--thing", "foo", "--stuff", "bar",
"-a", "b", "input", "output"])
print "Return code was", rc
</code></pre>
<p>也就是说,不要使用任何管道——让stdout和stderr显示在终端上。这应该可以避免缓冲的任何问题。一旦你在图片中放置了管道,缓冲通常是一个问题,如果你想在它发生时显示输出(我很惊讶你的自我回答没有这个问题;-)。</p>
<p>对于显示<em>和</em>捕获,顺便说一句,我总是建议<code>pexpect</code>(和<code>wexpect</code>在Windows上)精确地解决缓冲问题。</p>