python統計日誌ip訪問數指令碼
- importre
- tudou@Gyyx
- 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])
日誌格式為
[html]view plaincopyprint?
- #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用法為擷取資訊,如果擷取不到的時候就按照他的參數設定該值
[html]view plaincopyprint?
- >>>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'}