Python(六)操作文件+非空即真 |
您所在的位置:网站首页 › 飞狗么k › Python(六)操作文件+非空即真 |
文件的基本操作
r:只读(默认),不能写,在打开文件时,r可以省略不写,打开不存在的文件会报错
a+:追加读写模式,不存在则创建,存在则只追加内容 1、当前文件指针指到哪,seek(0):指到文件的最前面 2、read与readlines文件指针到文件的最后一行;readline文件指针到第二行 思路:直接循环文件对象,每次取得的就是文件里的每一行,直接使用for循环即可 with:会在使用完这个文件之后,自动关闭文件,用法如下: 修改文件的话,有两种方式,一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容;第二种是把修改后的文件内容写到一个新的文件中 第一种:
第二种: TRUE:真 false:'' none,[],{} 非空即真: 非0即真: 练习: #-*-coding:utf-8-*-#需求:每分钟监控服务器日志,IP请求超过200次的,加入黑名单##1、读文件,获取到每行的内容,open readlines# 178.210.90.90 - - [04/Jun/2017:03:44:13 +0800] #2、找到IP,按照空格分隔字符串,取第一个元素,split# 3、把IP存到字典里,每个IP出现一次,IP次数就+1# 4、判断IP次数是否大于200,加入黑明单import timepoint=0#定义一个指针为0,即在文件的最上边while True:#循环 ips={}#定义一个空字典 f=open('access.log',encoding='utf-8') f.seek(point)#指定到指针的位置 for line in f.readlines():#循环文件里的每一行,即生成list #获取所有的IP和次数存在字典里 ip=line.split()[0]#list里面按照空格分隔字符串,第一个元素即为ip,存在变量ip里面 #print(ip) if ip not in ips:# ips[ip]=1#如果从list里面取到的ip不在字典ips里面,那么这个ip对应的value=1 else: ips[ip]+=1#如果从list里面取到的ip在字典ips里面,那么这个ip对应的value的值就+1 point=f.tell()#记录读完之后的文件指针 for k,count in ips.items(): if count>200: print('[%s]加入黑明单 '%ip) #print(ips) time.sleep(60) 修改文件:文件内容如下:
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |