无法读取子进程输出

时间:2012-02-06 13:56:34

标签: python subprocess

我正在执行python命令,

proc = subprocess.Popen(cmd,
                        shell=False,
                        stdin=subprocess.PIPE,
                        stdout=subprocess.PIPE,
                        stderr=subprocess.PIPE,
                        )

执行命令后我想读取stderr和stdout

res = proc.stderr.read()

在res我期待任何错误或''

但是读取stderr的时间是无限的,所以请不要继续读取它所得到的值。它会在无限时间内完成。

一段时间后,相同的代码工作正常,但不知道为什么它现在不读stderr。

任何提示,谢谢。

1 个答案:

答案 0 :(得分:1)

而不是显式调用stderr.read(),只需在proc上进行通信。

output, error = proc.communicate()

通过这种方式,您可以通过与流程进行通信来获得输出和错误。