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模拟登录百度贴吧(百度贴吧登录)实例
Dec 18 Python
python实现每次处理一个字符的三种方法
Oct 09 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
TensorFlow 读取CSV数据的实例
Feb 05 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 Python
如何使用repr调试python程序
Feb 28 Python
将keras的h5模型转换为tensorflow的pb模型操作
May 25 Python
python中plt.imshow与cv2.imshow显示颜色问题
Jul 16 Python
python实现登录与注册系统
Nov 30 Python
基于Python实现粒子滤波效果
Dec 01 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分页显示制作详细讲解
2008/11/19 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
python回调函数的使用方法
2014/01/23 Python
python实现网页链接提取的方法分享
2014/02/25 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
python实现excel读写数据
2021/03/02 Python
python每天定时运行某程序代码
2019/08/16 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
python中调试或排错的五种方法示例
2019/09/12 Python
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
农民致富事迹材料
2014/01/23 职场文书
学生安全责任书
2014/04/15 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
小学科学教学计划
2015/01/21 职场文书
电力培训学习心得体会
2016/01/11 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
MySQL学习总结-基础架构概述
2021/04/05 MySQL
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js