用python编写一个在当前目录下获取log文件,根据时间日期进行排序,排序过程中没有出现的时间自动补全,并统计文件内每个时间总的数量,把统计结果输出到一个新的txt文件内
时间: 2024-02-03 16:13:50 浏览: 55
基于Python实现按时间分割txt文件中的数据
好的,可以使用Python内置的datetime模块和os模块来实现这个功能。下面是代码实现:
```
import datetime
import os
# 获取当前目录下所有log文件
log_files = [file for file in os.listdir() if file.endswith('.log')]
# 遍历每个log文件
for log_file in log_files:
# 统计每个时间点的数量
time_count = {}
with open(log_file, 'r') as f:
lines = f.readlines()
for line in lines:
# 获取时间
time_str = line.split()[0]
time_obj = datetime.datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')
# 统计数量
if time_str in time_count:
time_count[time_str] += 1
else:
time_count[time_str] = 1
# 对时间进行排序
time_list = sorted(time_count.keys())
start_time = datetime.datetime.strptime(time_list[0], '%Y-%m-%d %H:%M:%S')
end_time = datetime.datetime.strptime(time_list[-1], '%Y-%m-%d %H:%M:%S')
time_range = end_time - start_time
for i in range(time_range.days * 24 + time_range.seconds // 3600 + 1):
curr_time = (start_time + datetime.timedelta(hours=i)).strftime('%Y-%m-%d %H:%M:%S')
# 自动补全不存在的时间
if curr_time not in time_count:
time_count[curr_time] = 0
# 将统计结果输出到新的txt文件中
with open(log_file[:-4] + '_count.txt', 'w') as f:
for time_str in sorted(time_count.keys()):
f.write(f"{time_str}: {time_count[time_str]}\n")
```
这段代码会遍历当前目录下所有以.log结尾的文件,然后对每个文件进行处理。处理过程中会统计每个时间点的数量,并对时间点进行排序和补全,最后将统计结果输出到一个新的txt文件中。
阅读全文