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的Tornado框架实现数据可视化的教程
May 02 Python
python使用range函数计算一组数和的方法
May 07 Python
Python数组定义方法
Apr 13 Python
Python中的数学运算操作符使用进阶
Jun 20 Python
Python3.4解释器用法简单示例
Mar 22 Python
python远程连接MySQL数据库
Apr 19 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
python 定时器每天就执行一次的实现代码
Aug 14 Python
关于django 1.10 CSRF验证失败的解决方法
Aug 31 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
Apr 01 Python
python操作链表的示例代码
Sep 27 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
Jun 05 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_SELF的安全问题
2009/09/05 PHP
php学习之运算符相关概念
2011/06/09 PHP
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
php链表用法实例分析
2015/07/09 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
Python splitlines使用技巧
2008/09/06 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
法国体育用品商店:GO Sport
2019/10/23 全球购物
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
银行员工辞职信范文
2014/01/20 职场文书
公司感谢信范文
2015/01/22 职场文书
单位介绍信格式范文
2015/05/04 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
班主任班级管理心得体会
2016/01/07 职场文书