写入文件

# 文件操作分为:
# 1.打开文件,如果文件在当前目录下直接写文件名,如果文件在其他目录下写绝对路径
# 2.读/写文件
# 3.关闭文件

# 一、文件打开模式
# 'r':只读,文件读取后,会有文件指针记录读取文件的行数
# 'w':只写,会把以前的内容清空掉,建议写新文件时,使用w模式
# 'a':只追加
# 'r+' == r+w(可读可写,文件若不存在就报错(IOError))
# 'w+' == w+r(可读可写,文件若不存在就创建)
# 'a+' ==a+r(可追加可写,文件若不存在就创建)
# 对应的,如果是二进制文件,就都加一个b就好啦:
# 'rb'  'wb'  'ab'  'rb+'  'wb+'  'ab+'

二、读文件
f = open('a.txt','r',encoding='utf-8')#打开模式r w a
result1 = f.readline()#读文件,一次只读一行
print(result1)
result = f.read()#读文件,获取文件里的全部内容
result2 = f.readlines()#读文件,把文件里的内容放到一个list里,每一行是一个元素
#f.read(),f.readlines()这两个方法当文件很大时,会占用很大的内存
print(result2)
#处理大文件的时候,循环读取
for line in f:
print(line)
f.close()#关闭文件


三、写文件
f1 = open('a1.txt','w',encoding='utf-8')#打卡模式r w a
f1.write('12')#这个是一次写一行
#print(f.read())
l = ['fdslfjs\n','fdsrewr\n','fdsfsdfrere\n']
f1.writelines(l)#将列表写到文件中
#循环写入
for i in l:
f.write(i)
f1.close()

四.监控日志小练习
#1、监控,一直在运行,死循环,每分钟读一次文件
#2、第一次运行,读取文件所有的内容,从文件内容里获取到IP地址,及每个IP地址出现的次数
#3、判断每个IP地址出现的次数,如果大于大于50次,那么发短信告警
#4、等待60秒,继续重复上面的操作,读文件,获取内容
import time
point = 0#最前面
while True:
ip_list = {} #ip:ipcount
f = open('access.log', encoding='utf-8')
f.seek(point)#移动文件指针到哪个位置
for line in f:
ipStr = line.split()[0]
if ipStr not in ip_list:
ip_list[ipStr] = 1#不存在则加入统计
else:
ip_list[ipStr] += 1#存在则修改统计次数
point = f.tell()#当前文件指针的位置
f.close()
for ip in ip_list:
ipCount = ip_list.get(ip)#获取IP的统计次数
if(ipCount >= 50):
print('请求次数超过5次的IP:%s,请求次数为:%s'%(ip,ipCount))

time.sleep(60)

猜你喜欢

转载自www.cnblogs.com/shine0824/p/12802742.html