subprocess.Popen()stdout和stderr处理

时间:2018-10-23 00:41:16

标签: python subprocess

如何处理stderr进程?

proc = subprocess.Popen('ll'.split(), stdout=subprocess.PIPE)

for i in proc.stdout:
   print(i)

现在我正在流式传输输出,但是我不确定如何正确处理可能发生的潜在错误。

我想使用out, err = proc.communicate(),但是我的out可能是一个非常非常长的字符串

1 个答案:

答案 0 :(得分:1)

如果您知道需要什么错误消息,那么答案是将subprocess.STDOUT传递给stderr的{​​{1}}参数,以便您的stderr消息在stdout流中: / p>

Popen

或者,如果您不关心stdout消息,那么只需遍历stderr即可:

proc = subprocess.Popen('ll'.split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

for i in proc.stdout:
   print(i)
   # check for error message strings and do something with them