python从目录下所有log文件中提取倒数第二行最后一个数据,其中log是以%Y%m%d%H%M%S格式命名,数据用空格隔开,根据数据生成曲线
时间: 2024-12-17 09:36:09 浏览: 2
Python进行数据提取的方法总结
在Python中,你可以使用`os`模块来遍历目录,`datetime`模块解析日志文件名,`re`模块用于正则表达式匹配日期时间,然后读取文件内容并处理最后一行数据。这里是一个简单的示例:
```python
import os
import re
from datetime import datetime
def extract_last_data(directory):
# 正则表达式匹配日志文件名
regex = r"%Y%m%d%H%M%S"
for filename in sorted(os.listdir(directory), reverse=True): # 遍历目录按名称排序,取最后两份文件
if not filename.endswith(".log"): continue
file_path = os.path.join(directory, filename)
try:
with open(file_path, 'r') as f:
lines = f.readlines()
# 获取倒数第二行
last_line = lines[-2]
# 提取日期部分
match = re.search(regex, filename)
timestamp = datetime.strptime(match.group(), "%Y%m%d%H%M%S")
# 提取数据(假设数据总是由空格分隔)
data_points = last_line.strip().split()[-1] # 取倒数第二个元素作为数据
# 根据需求生成曲线,这通常需要进一步的数据处理或绘图库如matplotlib
# 例如,可以这样生成一条简单的时间序列线图
from matplotlib.pyplot import plot, show
x_axis = [timestamp.timestamp()] # 将时间戳转换为秒
plot(x_axis, [float(data_points)])
show()
except Exception as e:
print(f"无法处理文件 {file_path}: {e}")
# 调用函数,提供目录路径
extract_last_data("/path/to/your/log/directory")
```
阅读全文