gpt4 book ai didi

Python 子进程将输出作为 stderr 返回

转载 作者:太空宇宙 更新时间:2023-11-04 02:44:47 26 4
gpt4 key购买 nike

我一直在研究与 ffmpeg 交互的 Python 脚本;然而,我注意到即使一切运行良好,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。

最佳答案

您可以通过这样做将进程的 stderr 重定向到它的 stdout:

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

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

out = p.stdout.read()

这将在您的进程终止后返回标准输出的内容。

关于Python 子进程将输出作为 stderr 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45432720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com