Python文本处理与正则表达式全解析
1. 日志处理应用重构
在日志处理应用中,我们引入了 BaseHandler
类,它能保存所需的输出通道和报告格式。 MaxSizeHandler
和 ErrorCodeHandler
已更新为继承自 BaseHandler
,并对 __init__
方法进行了扩充,使其能接受所需的输出格式和类似文件的输出对象,这大大增加了代码的复用潜力。
我们将每个报告方法重命名为 do_text
,并修改了打印函数,确保输出定向到指定的输出流。新的 __init__
参数都有默认值,这样就不会破坏依赖此代码的现有库的兼容性。
报告方法现在只需调用 self.render
并传入结果值字典。当调用 render
时,它会根据所需格式动态查找格式化函数,并将结果对象传递给该函数。由于两个处理程序都继承自 BaseHandler
,我们只需在基处理程序中添加 do_*
方法,就能在所有报告中立即使用新格式。
load_config
方法也有了一些变化,不再在模块内读取命令行参数,而是将其移到了主入口函数中,这里只按要求读取配置文件,并添加了所需输出通道和报告格式的新选项。
最后,我们添加了一个辅助方法来返回流。如果传入的是破折号,则返回默认值;如果传入的是其他内容,