0

对于我当前的项目,我需要找到一种方法将依赖于标准输出的版本或至少将格式化的标准输出写入日志文件。目前我只是使用subprocess.Popen(exec, stdout=log),它将它写入一个未格式化的文件。

我得到的最好的想法是即时格式化输出,通过拦截标准输出,将其重新路由到自定义模块,并通过使用 if 和 elif 的组合将自己的字符串写入日志。但是我在文档中找不到任何关于如何在 Python 3 中执行此操作的方法。我能找到的最合适的答案是在这个问题中,接受的答案已经很接近了。

但我只是不明白我应该如何构建应该用作stdout=class的类。这些方法中的哪一种接收输入(以及它是如何格式化的)?这些方法中哪些是必要的?或者甚至可能有一种更简单的方法来完成我想做的事情?

4

1 回答 1

1

您可以使用该sarge项目来允许父进程捕获子进程的stdout(和/或stderr),逐行读取(比如说)并使用读取的行做任何您喜欢的事情(包括将它们写入,适当格式化,到日志文件)。

披露:我是该sarge项目的维护者。

于 2012-05-10T18:22:29.063 回答