python统计日志ip访问数的方法


Posted in Python onJuly 06, 2015

本文实例讲述了python统计日志ip访问数的方法。分享给大家供大家参考。具体如下:

import re
f=open("/tmp/a.log","r")
arr={} 
lines = f.readlines()
for line in lines: 
  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)
  if match: 
    ip = match.group(1) 
    if(arr.has_key(ip)): 
      arr[ip]+=1 
    else: 
      arr.setdefault(ip,1) 
f.close() 
for key in arr: 
  print key+"->"+str(arr[key])

日志格式为:

#111.172.249.84 - - [12/Dec/2011:05:33:36 +0800] "GET /images/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" 
#111.172.249.84 - - [12/Dec/2011:05:33:36 +0800] "GET /images/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" 
#111.172.249.85 - - [12/Dec/2011:05:33:36 +0800] "GET /images/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" 
#111.172.249.86 - - [12/Dec/2011:05:33:36 +0800] "GET /images/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.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程序设计有所帮助。

Python 相关文章推荐
python通过get,post方式发送http请求和接收http响应的方法
May 26 Python
Python选课系统开发程序
Sep 02 Python
python绘制双柱形图代码实例
Dec 14 Python
python2.7到3.x迁移指南
Feb 01 Python
对Python中gensim库word2vec的使用详解
May 08 Python
matplotlib实现热成像图colorbar和极坐标图的方法
Dec 13 Python
安装好Pycharm后如何配置Python解释器简易教程
Jun 28 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
Python的赋值、深拷贝与浅拷贝的区别详解
Feb 12 Python
大数据分析用java还是Python
Jul 06 Python
基于python实现百度语音识别和图灵对话
Nov 02 Python
基于python模拟TCP3次握手连接及发送数据
Nov 06 Python
python检查指定文件是否存在的方法
Jul 06 #Python
python转换字符串为摩尔斯电码的方法
Jul 06 #Python
python实现文件路径和url相互转换的方法
Jul 06 #Python
详解Python中的Cookie模块使用
Jul 06 #Python
python计算文本文件行数的方法
Jul 06 #Python
python实现ping的方法
Jul 06 #Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 #Python
You might like
php抓取页面与代码解析 推荐
2010/07/23 PHP
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
js中replace的用法总结
2013/12/27 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
简单介绍Python中的readline()方法的使用
2015/05/24 Python
python简单实现计算过期时间的方法
2015/06/09 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
情人节快乐! python绘制漂亮玫瑰
2020/08/18 Python
如何更优雅地写python代码
2019/07/02 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
Django 再谈一谈json序列化
2020/03/16 Python
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
往来会计岗位职责
2013/12/19 职场文书
跑操口号
2014/06/12 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
Python实现生活常识解答机器人
2021/06/28 Python