有一个日志文件test.log,这里面的日志是多行的,每一行的结构都是三个字段,分别为来源ip,被访问的接口,以及访问时间,字段之间是逗号分割的,求这个日志文件被访问最多前5个的接口是哪些
有一个日志文件test.log,这里面的日志是多行的,每一行的结构都是三个字段,分别为来源ip,被访问的接口,以及访问时间,字段之间是逗号分割的,求这个日志文件被访问最多前5个的接口是哪些
import csv
def extract_data(file):
interface_count = {}
with open(file, 'r') as f:
reader = csv.reader(f)
for row in reader:
if row[1] in interface_count:
interface_count[row[1]] += 1
else:
interface_count[row[1]] = 1
return interface_count
def get_top_five(interface_count):
sorted_interface_count = sorted(interface_count.items(), key=lambda x: x[1], reverse=True)
return [i[0] for i in sorted_interface_count[:5]]
file = "test.log"
interface_count = extract_data(file)
top_five = get_top_five(interface_count)
print(top_five)
import sys
from collections import Counter
with open(sys.argv[1]) as log:
lines = log.readlines()
apis = Counter()
for line in lines:
line = line.strip()
if line == '':
continue
[_, api, _] = line.split(',')
apis[api] += 1
top_5_apis = apis.most_common(5)
for api, count in top_5_apis:
print(api, count)
新手上路,请多包涵
1 回答9.7k 阅读✓ 已解决
2 回答5.4k 阅读✓ 已解决
2 回答3.7k 阅读✓ 已解决
3 回答4.5k 阅读
3 回答1.5k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
4 回答1.7k 阅读✓ 已解决
如果是在linux下一条命令就可以解决