【发布时间】:2019-05-11 15:07:35
【问题描述】:
使用sh模块,我想log进程的stdout/stderr并捕获stdout进行处理。该过程可能需要很长时间,并且记录不能等到该过程完成,以便用户实时看到输出。
以下内容可以很好地记录标准输出/标准错误。但是 stdout 与 stderr 混合在一起,没有方便的方法将两者分开。
import sh
import logging
logger = logging.getLogger(__name__)
command = sh.bash('-c', 'echo a; echo b >&2', _iter=True, _err_to_out=True)
for line in command:
logger.error(line)
print(command.stdout)
输出是这样的:
a
b
b'a\nb\n'
有没有办法做到这一点,但不混合 stdout 和 stderr?
【问题讨论】:
-
就像 _err_to_out=False 一样简单,反正这是该变量的默认值 :) @singuliere
-
如果 _err_to_out 为 false,stderr 将不会被记录