python从目录下所有log文件中提取倒数第二行最后一个数据,其中log是以%Y%m%d%H%M%S格式命名,根据数据生成曲线
时间: 2024-12-17 16:35:58 浏览: 3
在Python中,你可以使用`os`模块遍历目录,`datetime`模块解析日志文件名,`re`模块进行模式匹配,然后通过逐行读取文件内容找到倒数第二行。这里是一个基本的示例:
```python
import os
import datetime
import re
# 定义函数来获取倒数第二行的日期时间数据
def get_last_data(line):
match = re.search(r'\d{4}(\d{2})(\d{2})\d{2}\d{2}\d{2}', line) # 匹配年月日小时分钟秒
if match:
date_time_str = f'{match.group(1)}-{match.group(2)}-{match.group(3)} {match.group(4)}:{match.group(5)}:{match.group(6)}'
return datetime.datetime.strptime(date_time_str, '%y-%m-%d %H:%M:%S') # 解析字符串到datetime对象
# 指定需要查找的日志文件夹路径
folder_path = '/path/to/your/logs'
# 遍历文件夹及其子目录
for dirpath, _, files in os.walk(folder_path):
for file_name in files:
if file_name.endswith('.log'): # 确保是.log文件
file_path = os.path.join(dirpath, file_name)
with open(file_path, 'r', newline='', encoding='utf-8') as log_file:
lines = log_file.readlines()[:-1] # 读取除最后一行的所有行
last_line_data = get_last_data(lines[-2]) # 获取倒数第二行的日期时间
# 根据实际需求,这里假设数据存储在一个列表中,可以根据日期查询并计算曲线
# 假设data_dict是一个字典,键是日期,值是对应的数据点
data_dict = {last_line_data: your_data_value} # 替换your_data_value为你实际提取的数据
# 可能需要绘图库如matplotlib生成曲线,例如:
# import matplotlib.pyplot as plt
# plt.plot(data_dict.keys(), data_dict.values())
# plt.show()
阅读全文