使用Python从日志中获取关键性的信息到Excel
目前有这么个需求:日志密密麻麻一大堆,但是如何快速获取关键性信息?成为了我们关注的问题,不单单要获取,还要耐看。
准备好日志,查询失败的日志那一行的相关信息,上代码:
import openpyxl # 指定要查找的关键词 target_word = 'Failed,' # 打开txt文件并查找关键词 text_file = open('test.log', 'r', encoding='utf-8') data = [] for line in text_file: if target_word in line: data.append([line.strip()]) # 把查找到的行(即包含指定关键字的行)添加到元素为列表的列表中 text_file.close() # 创建Excel workbook = openpyxl.Workbook() worksheet = workbook.active # 把数据写入Excel for index, row in enumerate(data): worksheet.cell(row=index+1, column=1, value=row[0]) # 保存Excel workbook.save('get_data.xlsx')
得到的效果就是这样子:
优化版:添加了查询条件
import openpyxl file_name = 'test.log' # 文件名 keyword = 'Failed,' # 查询关键字 with open(file_name, 'r', encoding='utf-8') as f: lines = f.readlines() keyword_lines = [] # 存储关键字所在行号 for index, line in enumerate(lines): if keyword in line: keyword_lines.append(index) result = [] # 存储查询结果 for keyword_line in keyword_lines: start_index = max(0, keyword_line-5) # 上限不能超过第一行 end_index = keyword_line+1 # 下限为关键字所在行 result.extend(lines[start_index:end_index]) # 存储结果 # 创建或打开Excel文件 excel_name = 'result.xlsx' wb = openpyxl.Workbook() sheet = wb.active # 将查询结果逐行写入Excel文件 for index, r in enumerate(result): sheet.cell(row=index+1, column=1, value=r) # 保存Excel文件 wb.save(excel_name)