python脚本实现统计日志文件中的ip访问次数代码分享


Posted in Python onAugust 06, 2014

适用的日志格式:

106.45.185.214 - - [06/Aug/2014:07:38:59 +0800] "GET / HTTP/1.0" 200 10 "-" "-"
171.104.119.22 - - [06/Aug/2014:08:55:01 +0800] "GET / HTTP/1.0" 200 10 "-" "-"
27.31.238.242 - - [06/Aug/2014:09:43:19 +0800] "GET / HTTP/1.0" 200 10 "-" "-"
218.65.202.131 - - [06/Aug/2014:10:33:59 +0800] "GET / HTTP/1.0" 200 10 "-" "-"

以上为nginx的日志,本程序只适合用于IP在开头并用空格分开的这种格式。

实例代码:

import sys
 
class Log:
 
  def __init__(self, filename,dic,count):
    self.filename = filename
    self.dic=dic
    self.count=count
 
  def parse(self):
    i=1
    f=file(self.filename)
    while True:
      line=f.readline()
      if len(line)==0:
        break
      ip=line.split(' ')
      if ip[0] in dic:
        self.dic[ip[0]]=self.dic[ip[0]]+1
      else:
        self.dic[ip[0]]=i
    soredic=sorted(self.dic.items(), key=lambda d:d[1],reverse=True)
    counts=0;
    for item in soredic:
      if counts==int(self.count):
        break
      print("IP:%s  Total Times: %s"%(item[0],item[1]))
      counts=counts+1
    f.close()
 
if __name__=="__main__":
 
  if len(sys.argv)<3:
    print('usage:log.py log.log toptimes\nexample log.py log.log 20\ncode by iswin')
    sys.exit()
  dic={}
  log=Log(sys.argv[1],dic,sys.argv[2])
  log.parse()
Python 相关文章推荐
python格式化字符串实例总结
Sep 28 Python
Python减少循环层次和缩进的技巧分析
Mar 15 Python
基于python实现的抓取腾讯视频所有电影的爬虫
Apr 22 Python
Centos 升级到python3后pip 无法使用的解决方法
Jun 12 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
python实现控制COM口的示例
Jul 03 Python
Python 进程之间共享数据(全局变量)的方法
Jul 16 Python
django中瀑布流写法实例代码
Oct 14 Python
YUV转为jpg图像的实现
Dec 09 Python
python pip如何手动安装二进制包
Sep 30 Python
python 用pandas实现数据透视表功能
Dec 21 Python
Python写的Socks5协议代理服务器
Aug 06 #Python
Python写的PHPMyAdmin暴力破解工具代码
Aug 06 #Python
Python写的Discuz7.2版faq.php注入漏洞工具
Aug 06 #Python
Python常用列表数据结构小结
Aug 06 #Python
Python生成pdf文件的方法
Aug 04 #Python
Tornado Web服务器多进程启动的2个方法
Aug 04 #Python
Python通过解析网页实现看报程序的方法
Aug 04 #Python
You might like
全面了解PHP中的全局变量
2016/06/17 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
php操作access数据库的方法详解
2017/02/22 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
Add a Formatted Table to a Word Document
2007/06/15 Javascript
javascript实现的动态文字变换
2007/07/28 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
2013/04/12 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
监理资料员岗位职责
2014/01/03 职场文书
酒店拾金不昧表扬信
2014/01/18 职场文书
读群众路线心得体会
2014/03/07 职场文书
企业总经理任命书
2014/06/05 职场文书
美术专业自荐信
2014/07/07 职场文书
小学生差生评语
2014/12/29 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
2015年敬老院工作总结
2015/05/18 职场文书
小学音乐课教学反思
2016/02/18 职场文书
MySQL的存储过程和相关函数
2022/04/26 MySQL