将 stdout 和 stderr 与 Python popen 合并,并检测 stderr 是否为空



我想用 popen 运行一个子进程,它可以向 stdout 和 stderr 发送消息,但尽管写入 stderr,该子进程将继续以愉快的方式进行。

我想将 stdout 和 stderr 一起流式传输,以便我按照它发生的确切顺序获得输出(或者我猜在技术上被刷新(。 然后,我想记录完整的结果集。 但我也想独立知道 stderr 是否为空。 如果不是,我将抛出一个例外。

我很清楚如何将它们分开或合并在一起,但我如何才能同时做到这两点?

首先,

我在很大程度上通过进一步挖掘生成流的过程来解决我的实际用例。 我正在使用MySQL客户端,并发现命令行开关的正确组合可以解决真正的目标。 我将省略它,因为它完全特定于这种情况。

然而,在我发现这一点之前,我确实找到了一个非常有用的探索方向 - 使用程序"Tee"和/或Python源代码等效物。 我没有尝试实现它,但似乎是一种可以用来同时从 stdout 和 stderr 收集输出的方法,同时只将 stdout 发送到另一个文件描述符。 如果两个输出不同,那么这将告诉您是否使用了stderr。

退房:

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

和:

Python子进程将孩子的输出到文件和终端?

最新更新