题解 | #简单错误记录#
简单错误记录
https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
import sys
# 错误记录类
class ErrorLog():
def __init__(self):
# 初始化一个日志id计数字典
self.logs_id = {}
# 一个日志信息的列表
self.logs = []
# 最大条数
self.max_length = 8
# 文件名截取长度
self.str_limit = 16
# 日志计数
self.count = 0
# 记录日志方法
def record(self, log):
filename , line = self.log_format(log)
self.count += 1
log_id = filename + line
# 检查是否重复
if not self.log_repeat_check(log_id):
if len(self.logs) >= self.max_length:
self.logs.pop(0)
self.logs.append({
'file':filename,
'line':line
})
self.logs_id[log_id] = 1
else:
self.logs_id[log_id] += 1
# 辅助方法,日志格式化
def log_format(self, log):
# 空格拆分
filepath,line = log.split()
# 考查切片 [-16:] 第一个参数负值,表示从后往前,取最后16个
filename = filepath.split('\\')[-1][-self.str_limit:]
return filename,line
# 辅助方法,检查重复
def log_repeat_check(self, log_id):
return log_id in list(self.logs_id)
# 打印日志
def get_current_logs(self):
for item in self.logs:
print(' '.join([item['file'], item['line'], str(self.logs_id[item['file']+item['line']])]))
logger = ErrorLog()
for item in sys.stdin:
logger.record(item.strip())
logger.get_current_logs()
腾讯云智研发成长空间 5107人发布