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类和函数中使用静态变量的方法
May 09 Python
python在不同层级目录import模块的方法
Jan 31 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
浅谈Python中的zip()与*zip()函数详解
Feb 24 Python
python基础教程项目二之画幅好画
Apr 02 Python
python 图像处理画一个正弦函数代码实例
Sep 10 Python
python使用梯度下降算法实现一个多线性回归
Mar 24 Python
python TCP包注入方式
May 05 Python
keras 如何保存最佳的训练模型
May 25 Python
Python加速程序运行的方法
Jul 29 Python
python使用bs4爬取boss直聘静态页面
Oct 10 Python
python实现登录与注册系统
Nov 30 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
人大复印资料处理程序_补充篇
2006/10/09 PHP
PHP正则的Unknown Modifier错误解决方法
2010/03/02 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
php对大文件进行读取操作的实现代码
2013/01/23 PHP
ThinkPHP3.1数据CURD操作快速入门
2014/06/19 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
python将图片文件转换成base64编码的方法
2015/03/14 Python
python删除过期文件的方法
2015/05/29 Python
python学习之编写查询ip程序
2016/02/27 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
Python 查看文件的编码格式方法
2017/12/21 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
高一物理教学反思
2014/01/24 职场文书
2014学年自我鉴定
2014/02/23 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle