zoukankan      html  css  js  c++  java
  • 【Python】学习笔记3 集合-监控日志脚本

    1、集合

     1 # 新的数据类型集合:天生去重
     2 
     3 # ----------定义----------
     4 s = set() #空的集合
     5 s2 = {   #有内容的集合,输出时自动去重
     6     '1',
     7     '2',
     8     '2',
     9     '3',
    10 }
    11 
    12 
    13 # ----------天生去重----------
    14 print(s2) #{'2', '3', '1'}
    15 # 如果是数组list的话,去重必须用for循环count函数,可以利用集合方面去重
    16 # 集合是无序的,没有办法取到下标,每次输出内容可能都不一样
    17 
    18 # ----------添加值----------
    19 # 
    20 s3 = {1,3,4}
    21 s3.add('4') #s3={1,3,4}
    22 # 重复的自动不会添加
    23 
    24 # ---------- 删除值----------
    25 s2.remove('1')
    26 s2.pop()#随机删除一个值
    27 
    28 # ----------交集、并集、差集----------
    29 # 交集:两者中共有的部分
    30 print(s2.intersection(s3)) #两者之间都有的
    31 print(s2&s3)
    32 
    33 # 并集:合并所有的内容
    34 print(s2.union(s3))
    35 print(s2|s3)
    36 
    37 # 差集:A集合中有但是B集合中没有的部分
    38 s2 = {   #集合,输出时自动去重
    39     '1',
    40     '2',
    41     '8',
    42     '3',
    43 }
    44 s3 = {   #空的集合
    45     '1',
    46     '2',
    47     '6',
    48     '3',
    49 }
    50 print(s2.difference(s3)) #S2中存在,s3中不存在的,8
    51 print(s2-s3)  #S2中存在,s3中不存在的,8

    2、练习,监控日志脚本

    日志文件中同一个ip地址只能访问200次,超过加入黑名单

     1 # 1,如果同一个ip地址60s内只能访问200次,超过的话,将ip加入黑名单
     2 # 需求分析
     3     #1,60s读一次文件
     4     #分割,取到第一个元素,ip地址
     5     #把所有ip加到一个list里,如果ip次数超过200次,加入黑名单
     6 
     7 import  time
     8 point = 0
     9 while True:
    10     ips = [] #存放所有ip地址
    11     blk_set = set() #存放需要加入黑名单的ip,因为集合是去重的,所以没有重复ip
    12     with open('access.log',encoding='utf-8') as f:
    13         f.seek(point)
    14         for line in f:
    15             ip = line.split()[0]
    16             ips.append(ip)
    17             if ips.count(ip)>10:
    18                 blk_set.add(ip)
    19         print(blk_set)
    20         for ip in blk_set:#这里是因为防止ip重复加入黑名单,去重
    21             print('%s加入黑名单'%ip)
    22         point = f.tell()
    23         time.sleep(60) #间隔60s监控一次
  • 相关阅读:
    asp.net基础开发中常用代码大全
    IPv6網絡開發范例
    [轉]现场:是谁在住救灾帐篷者?
    运送救灾物资路上的感人画面纪实
    DataGridView新特色、常用操作
    [ZT]定制自己的Windows CE 5.0 ARM中文模拟器
    LoadRunner参数化功能详解
    [轉]灾区那么大,王十为什么直奔遵道镇,不去别处?
    [理想?夢想?]ERP项目怎么管
    乞讨老人为地震灾区捐款105元(图)
  • 原文地址:https://www.cnblogs.com/amengmeng/p/8260203.html
Copyright © 2011-2022 走看看