Python中的管道输出:数据和消息的多个通道?

Dar*_*ugh 2 python command-line

我正在做一些python编程,我想把一个程序的输出"管道"到另一个程序.使用sys.stdin和sys.stdout很容易做到这一点.但是,我还希望能够向终端打印信息和警告消息.有没有(简单)方法有多个通道,消息打印到终端,但数据被发送到另一个程序?

moo*_*eep 5

您可以使用stderr终端输出和stdout管道.

您可能会发现subprocess.Popen很有用.它产生另一个程序作为一个单独的进程,并允许您定义的文件描述符stdin,stdout并且stderr如你所愿.


Sil*_*Ray 5

这几乎logging就是构建模块的原因.您可以将消息记录到您可以从代码中的任何位置任意创建和命名的记录器,然后将处理程序附加到记录器,将数据推送到您想要的任何消费者或消费者.

如果这对您不起作用,moooeeeep的子流程建议可能是下一个探索的最佳途径.这是一种文明的方式来完成覆盖sys.stdout的同样的事情,这是只有野蛮人和体弱者应该做的事情.