• 写入文件


    # 文件操作分为:
    # 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 ','fdsrewr ','fdsfsdfrere ']
    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)
  • 相关阅读:
    二逼平衡树(树套树)
    NOI2010 超级钢琴
    SDOI2011 消耗战
    HNOI2013 游走
    [SDOI2010]外星千足虫
    [UVA 11374]Airport Express
    [Luogu P1354]房间最短路问题
    [Luogu P2296][NOIP 2014]寻找道路
    高精度算法
    洛谷红名+AC150祭
  • 原文地址:https://www.cnblogs.com/shine0824/p/12802742.html
Copyright © 2020-2023  润新知