我有以下代码效果很好。它从文件中获取我的 IP 地址并计算它们在日志文件中出现的次数。
def count_ips():
fp=open('logfile','r')
store=[]
while 1:
line=fp.readline()
if not line:
break
if line[-1:] == '\n':
line=line[:-1]
data1=line.split('"')
data2=data1[0].split(' ')
store.append({'IP':data2[0],'Date':data2[3]+' '+data2[4],'Action':' '.join(data1[1:-2]),'Browser':' '.join(data1[-2:])})
fp.close()
count={}
for i in store:
if i['IP'] in count:
count[i['IP']] +=1
else:
count[i['IP']] =1
avg=0
cnt=0
for i in count:
avg+=count[i]
cnt+=1
avg=avg/cnt
print 'average hit is: %i' % avg
for i in count:
if count[i] > 10:
print i +' %i' % count[i]
count_ips()
我真的不知道我是如何做到这一点的,但在本节中。我想在打印出来之前按计数排序。最大的数字在底部。
for i in count:
if count[i] > 10:
print i +' %i' % count[i]
在这一点上,我觉得我只是在看问题,并没有看到解决我的小困境的简单方法。
谢谢你的帮助!杰森