Python子进程将输出返回为stderr

时间:2017-08-01 08:29:59

标签: python python-3.x subprocess

我一直在研究Python脚本与ffmpeg进行交互;但是,我注意到即使一切运行正常,stdout也是空的,stderr会返回我对stdout的期望。如何修复它以便输出将由stdout返回?

这是再现这种现象的最简单的例子:

from subprocess import Popen, PIPE

p = Popen(['python', '-V'], stdin=PIPE, stdout=PIPE, stderr=PIPE)
out, err = p.communicate()
if out:
    print("Output. ", out.decode())
else:
    print("Error. ", err.decode())

这是输出:

Error.  Python 3.6.1 :: Anaconda 4.4.0 (64-bit)

我应该注意到我使用的是Windows 10。

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式将流程的self.tabBarController.tabBar重定向到stderr

stdout

然后你可以像这样检索进程产生的输出:

from subprocess import PIPE, STDOUT
p = subprocess.Popen(["python", "-V"], stdout=PIPE, stderr=STDOUT)

这将在您的进程终止后返回stdout的内容。