python统计日志ip访问数的方法
本文实例讲述了python统计日志ip访问数的方法。分享给大家供大家参考。具体如下:
importre
f=open("/tmp/a.log","r")
arr={}
lines=f.readlines()
forlineinlines:
ipaddress=re.compile(r'^#(((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?))')
match=ipaddress.match(line)
ifmatch:
ip=match.group(1)
if(arr.has_key(ip)):
arr[ip]+=1
else:
arr.setdefault(ip,1)
f.close()
forkeyinarr:
printkey+"->"+str(arr[key])
日志格式为:
#111.172.249.84--[12/Dec/2011:05:33:36+0800]"GET/images/i/goTop.pngHTTP/1.0"200486"http://wh.xxxx.com/""Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.1;Trident/5.0;SLCC2;.NETCLR2.0.50727;.NETCLR3.5.30729;.NETCLR3.0.30729;MediaCenterPC6.0;.NET4.0C;.NET4.0E)" #111.172.249.84--[12/Dec/2011:05:33:36+0800]"GET/images/i/goTop.pngHTTP/1.0"200486"http://wh.xxxx.com/""Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.1;Trident/5.0;SLCC2;.NETCLR2.0.50727;.NETCLR3.5.30729;.NETCLR3.0.30729;MediaCenterPC6.0;.NET4.0C;.NET4.0E)" #111.172.249.85--[12/Dec/2011:05:33:36+0800]"GET/images/i/goTop.pngHTTP/1.0"200486"http://wh.xxxx.com/""Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.1;Trident/5.0;SLCC2;.NETCLR2.0.50727;.NETCLR3.5.30729;.NETCLR3.0.30729;MediaCenterPC6.0;.NET4.0C;.NET4.0E)" #111.172.249.86--[12/Dec/2011:05:33:36+0800]"GET/images/i/goTop.pngHTTP/1.0"200486"http://wh.xxxx.com/""Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.1;Trident/5.0;SLCC2;.NETCLR2.0.50727;.NETCLR3.5.30729;.NETCLR3.0.30729;MediaCenterPC6.0;.NET4.0C;.NET4.0E)"
输出结果:
111.172.249.86->1 111.172.249.84->2 111.172.249.85->1
注释:python字段的setdefault用法为获取信息,如果获取不到的时候就按照他的参数设置该值
>>>a={}
>>>a['key']='123'
>>>print(a)
{'key':'123'}
>>>print(a.setdefault('key','456'))
#显示a这个字典的'key'值的内容,因为字典有,所以不会去设置它
123
>>>print(a.setdefault('key1','456'))
#显示a这个字典的'key1'值的内容,因为字典没有,所以设置为456了
456
>>>a
{'key1':'456','key':'123'}
希望本文所述对大家的Python程序设计有所帮助。