最近面试遇到好几次的一个问题,查找日志文件中topK的ip或域名或其他字段
#-*-coding:UTF-8-*-
#查找日志文件中top5的ip
import os
def top_ip(path):
with open(path) as file:
#定义一个空字典
ip_dict = {}
#按行读取文件
for line in file:
#以空格切分每行数据,ip为第一列,所以取[0]
ip = line.split()[0]
#如果字典中没有这个ip,就设为1
if ip not in ip_dict:
ip_dict[ip] = 1
#如果有此ip,就把value+1
else:
ip_dict[ip] += 1
#读取完成后,排序,reverse=true,出现次数多的排在前面
sort_value = [(k, ip_dict[k]) for k in sorted(ip_dict, key=ip_dict.get, reverse=True)]
#获取前五个,利用切片
return sort_value[0:5]
path = '/Users/XXX/desktop/log.txt'
print top_ip(path)