使用Python popen合并stdout和stderr并检测stderr是否为空

时间:2018-02-04 17:06:23

标签: python stdout popen stderr

我想用popen运行一个子进程,它可以向stdout和stderr发送消息,但是这个子进程将继续沿着它的快乐方式继续写入stderr。

我想将stdout和stderr一起流,所以我按照它发生的确切顺序得到输出(或者我在技术上刷新了)。然后,我想记录完整的结果集。但我也想独立知道stderr是否为空。如果不是,我将抛出异常。

我很清楚如何将它们分开或合并在一起,但我怎么可能同时做到?

1 个答案:

答案 0 :(得分:0)

首先,我通过深入研究生成流的过程,在很大程度上解决了我的实际用例。我正在使用MySQL客户端,并发现命令行开关的正确组合将解决真正的目标。我会把它留下来,因为它完全针对那种情况。

然而,在我遇到这个问题之前,我确实找到了一个非常有用的方向 - 使用程序“Tee”和/或Python源代码。我没有尝试实现它,但似乎是一个方法可以用来同时收集stdout和stderr的输出,同时只将stdout发送到另一个文件描述符。如果两个输出不相同,那么就会告诉你是否使用了stderr。

退房:

https://www.computerhope.com/unix/utee.htm

并且:

Python subprocess get children's output to file and terminal?