我一直在研究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。
答案 0 :(得分:2)
您可以通过以下方式将流程的self.tabBarController.tabBar
重定向到stderr
:
stdout
然后你可以像这样检索进程产生的输出:
from subprocess import PIPE, STDOUT
p = subprocess.Popen(["python", "-V"], stdout=PIPE, stderr=STDOUT)
这将在您的进程终止后返回stdout的内容。