我尝试实现一个选项,将控制台输出另外保存到文件中。 (如果该选项已激活)
我找到了两种方法: 1.使用日志记录模块 2.写一个这样的课:
class MyWriter:
def __init__(self, stdout, filename):
self.stdout = stdout
self.logfile = file(filename, 'a')
def write(self, text):
self.stdout.write(text)
self.logfile.write(text)
def close(self):
self.stdout.close()
self.logfile.close()
但我遇到了问题。 一些代码片段将在新进程中执行。这种方式无法捕捉到他们的印刷品。
当我启动我的程序时
"myscript.py > mylog.txt"
它有效。他得到了所有的照片。但是如何在我的脚本中以功能方式模拟这个?
答案 0 :(得分:1)
如果我理解正确,您想重定向您刚才开始的其他流程的stdout
吗?
然后你所要做的就是使用
subprocess.Popen(...)
命令。然后你可以使用你的MyWriter
课程。
答案 1 :(得分:1)
我的建议是使用日志记录模块,使用sockethandler并推送到将收到的日志写入文件的套接字服务器。
我希望它有所帮助
答案 2 :(得分:0)
问题可能必须解决如何执行新进程,您需要从主进程中的子进程收集输出,或者将文件名传递给子进程。您可以将环境变量用于文件名而不是将其作为参数传递,然后在子进程中也可以轻松访问日志文件。