【Python学习笔记】使用configparser.ConfigParser()类记录日志所遇到的问题
1. 问题描述
某项目日志有正常日志和异常日志,在调用异常日志显示接口时,总有正常的日志出现
2. 问题分析
内部使用pyhon的configparser.ConfigParser()记录日志,而在循环遍历日志文件时,将创建configparser.ConfigParser()对象的代码写在了循环体外。在这种情况下读取下一个日志文件时,执行的操作是若有与上一个日志文件相同的section则进行更新,若没有则保留上一个section及其数据,所以导致了正常的日志信息会出现在异常显示接口的结果中。
"""
@Author:
@Date:
@FileName:
@LastEditors:
@version: 1.0
@lastEditTime:
@Description: ini日志文件,在读取新的日志文件时某项section明明是空的,为什么还有数据?
"""
import configparser
import os
config = configparser.ConfigParser()
path = "data/log"
for log_filename in os.listdir(path):
log_path = os.path.join(path, log_filename)
config.read(log_path)
"""
如果第二个文件有Anomalies,而第三个文件没有Anomalies
当configparser.ConfigParser()对象声明在for循环之外时,read()只会更新读取到的新内容
则在读取第三个文件时,会保留第二个文件的Anomalies及其内容
则读取第三个文件
"""
if not config.has_section('Anomalies'):
print("no")
continue
print("yes")