うまく機能する次のコードがあります。ファイルから 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]
この時点で、私は物事を間違って見ているだけで、私の小さなジレンマを簡単に解決できるとは思いません.
助けてくれてありがとう!ジェイソン