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 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
python提示No module named images的解决方法
Sep 29 Python
python操作redis的方法
Jul 07 Python
Python正则表达式知识汇总
Sep 22 Python
Python爬取附近餐馆信息代码示例
Dec 09 Python
Python操作mongodb数据库进行模糊查询操作示例
Jun 09 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
用pycharm开发django项目示例代码
Jun 13 Python
Jupyter notebook快速入门教程(推荐)
May 18 Python
Python如何合并多个字典或映射
Jul 24 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
May 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
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
破解Session cookie的方法
2006/07/28 Javascript
基于jquery的气泡提示效果
2010/05/31 Javascript
jQuery源码分析之Event事件分析
2010/06/07 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
在Django框架中编写Contact表单的教程
2015/07/17 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
解决安装python库时windows error5 报错的问题
2018/10/21 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
python实现KNN分类算法
2019/10/16 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
Django框架models使用group by详解
2020/03/11 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
白俄罗斯大卖场:21vek.by
2019/07/25 全球购物
2014年教师工作总结
2014/11/10 职场文书
2014年项目工作总结
2014/11/24 职场文书
大班上学期个人总结
2015/02/13 职场文书
社区活动总结范文
2015/05/07 职场文书
2015年治庸问责工作总结
2015/07/27 职场文书
CAD实训总结范文
2015/08/03 职场文书
MySQL日期时间函数知识汇总
2022/03/17 MySQL