对于我当前的项目,我需要找到一种方法来将stdout依赖版本或至少一个格式化的stdout写入日志文件。 目前我只是使用 subprocess.Popen(exec,stdout = log),它将其写入文件,未格式化。
我得到的最好的想法是在运行中格式化输出,通过拦截标准输出,将其重新路由到自定义模块,并让它使用if和elif的组合将自己的字符串写入日志。但我在文档中的Python 3中找不到任何关于如何做到这一点的方法。我能找到的最合适的答案是this question,接受的答案已经接近了。
但我只是不明白我应该如何构建应该用作 stdout = class 的类。这些方法中的哪一个接收输入(以及如何格式化)?哪些方法是必要的?或者甚至可能有更简单的方法来完成我想要做的事情?
答案 0 :(得分:1)
您可以使用sarge
项目允许父进程捕获子进程的stdout
(和/或stderr
),逐行读取(比如说)并执行无论您喜欢什么样的读取线(包括将它们编写得恰当,格式化为日志文件)。
披露:我是sarge
项目的维护者。