python统计日志ip访问数的方法

作者:jiedushi 时间:2023-07-05 18:57:20 

本文实例讲述了python统计日志ip访问数的方法。分享给大家供大家参考。具体如下:


import re
f=open("/tmp/a.log","r")
arr={}
lines = f.readlines()
for line in lines:
 ipaddress=re.compile(r'^#(((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?))')
 match=ipaddress.match(line)
 if match:
   ip = match.group(1)
   if(arr.has_key(ip)):
     arr[ip]+=1
   else:
     arr.setdefault(ip,1)
f.close()
for key in arr:
 print key+"->"+str(arr[key])

日志格式为:


#111.172.249.84 - - [12/Dec/2011:05:33:36 +0800] "GET /images/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
#111.172.249.84 - - [12/Dec/2011:05:33:36 +0800] "GET /images/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
#111.172.249.85 - - [12/Dec/2011:05:33:36 +0800] "GET /images/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
#111.172.249.86 - - [12/Dec/2011:05:33:36 +0800] "GET /images/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"

输出结果:


111.172.249.86->1
111.172.249.84->2
111.172.249.85->1

注释:python字段的setdefault用法为获取信息,如果获取不到的时候就按照他的参数设置该值


>>> a={}
>>> a['key']='123'
>>> print (a)
{'key': '123'}
>>> print (a.setdefault('key','456'))
#显示a这个字典的'key'值的内容,因为字典有,所以不会去设置它
123
>>> print (a.setdefault('key1','456'))
#显示a这个字典的'key1'值的内容,因为字典没有,所以设置为456了
456
>>> a
{'key1': '456', 'key': '123'}

希望本文所述对大家的Python程序设计有所帮助。

标签:python,日志,ip
0
投稿

猜你喜欢

  • Python内置的HTTP协议服务器SimpleHTTPServer使用指南

    2021-11-22 08:11:12
  • Python正则表达式匹配和提取IP地址

    2023-04-01 07:25:21
  • Mysql数据表中的蠕虫复制使用方法

    2024-01-24 15:06:06
  • Django如何实现RBAC权限管理

    2021-05-20 19:14:27
  • python中关于日期时间处理的问答集锦

    2023-08-16 08:18:48
  • JS高阶函数原理与用法实例分析

    2024-05-09 10:36:21
  • python文本进度条实例

    2023-05-15 17:18:16
  • 以SortedList为例详解Python的defaultdict对象使用自定义类型的方法

    2022-04-07 02:32:28
  • 一个不错网速测试代码

    2008-07-20 13:41:00
  • Python爬虫实例_利用百度地图API批量获取城市所有的POI点

    2023-01-11 15:30:37
  • python采用django框架实现支付宝即时到帐接口

    2023-07-16 00:15:33
  • Python自动化办公之手机号提取

    2022-12-26 11:31:46
  • python读取配置文件方式(ini、yaml、xml)

    2022-10-12 05:07:29
  • MySQL日志专项之redo log和undo log介绍

    2024-01-23 03:33:16
  • Windows系统下mysql5.7.21安装详细教程

    2024-01-21 17:26:38
  • Pycharm直接使用远程服务器代码并调试的解决方法

    2021-05-13 10:21:03
  • vue关于eslint空格缩进等的报错问题及解决

    2024-05-10 14:09:26
  • oracle 性能优化建议小结

    2024-01-19 10:50:53
  • 在python中利用dict转json按输入顺序输出内容方式

    2021-10-26 15:17:23
  • 备战618!用Python脚本帮你实现淘宝秒杀

    2022-05-15 04:43:40
  • asp之家 网络编程 m.aspxhome.com