自动化学习笔记(四):python 文件操作

一、文件操作

保存到内存里,关闭就清除;若需要持久化保存,需保存到磁盘里

对文件的操作分三步:

1)打开文件

2)操作文件

3)关闭文件

 1 # f = open('文件名', '打开模式', 字符集)
 2     # 文件名:当前路径写文件名,如果在其他路径,写绝对路径
 3     # 打开模式:r只读模式,w只写模式,a追加模式
 4     # 字符集:如果中文,需要些utf-8,否则
 5 #文件指针:记录当前到第几行
 6 
 7 
 8 # 读文件
 9 f = open('文本.txt', 'r', encoding='utf-8')
10 result1 = f.readline()#读文件,一次只读取一行
11 result2 = f.read()#读文件,获取文件里面的全部内容
12 result3 = f.readlines()#读文件,读取文件里面的所有内容,返回的是一个list,每行的内容是list的一个元素
13 print('result1结果:', result1)
14 print('result2结果:', result2)
15 print('result3结果:', result3)
16 f.close()#关闭文件
17 
18 
19 # 处理大文件的时候:
20 # read()和readlines()方法操作文件的话,会先把文件所有内容读到内存中,内存数据一多,非常卡,高效的操作,就是读一行操作一行,读过的内容就从内存中释放
21 f = open('文本.txt', 'r', encoding='utf-8')
22 for line in f:   #line就是每行文件的内容,读完一行的话,就会释放一行的内存
23     print(line)
24 
25 
26 # 写文件
27 f = open('文本.txt', 'w', encoding='utf-8')
28 f.write('123\n')#写文件,会把以前的内容清空掉。若不存在的文件,会创建新文件
29 f.close()
30 
31 f = open('文本.txt', 'w', encoding='utf-8')
32 l = ['1234\n', '234\n']
33 f.writelines(l)#写文件,可以传list,会把以前的内容清空掉
34 f.close()
35 
36 f = open('文本.txt', 'w', encoding='utf-8')
37 l = ['1234\n', '234\n']
38 for i in l:
39     f.write(i)
40 f.close()

文件操作小练习:

 1 # 监控日志文件,IP超过50次报警
 2 # 分析:
 3 # 1.监控日志,一直运行,死循环,每分钟读一次文件
 4 # 2.第一次运行,读取文件所有内容,从文件内容里面找到获取到IP地址,以及每个IP地址出现的次数
 5 # 3.记住当前指针的位置,下次从这个位置开始读
 6 # 4.判断每个IP出现的次数,如果大于50次,那么就发短信报警
 7 # 5.等待60s,继续重复上面的操作,读文件,获取内容
 8 
 9 import time
10 point = 0#定义point,0代表最前面的位置
11 while True:#死循环
12     f = open(r'C:\Users\zx\Desktop\access.log', encoding='utf-8')#只读模式r可以省略
13     f.seek(point)#移动指针到哪个位置
14     ip_list = {}#定义字典{'ip':2}
15     for line in f:#循环文件
16         ip = line.split()[0]#分割成list,取下标为0的元素
17         if ip not in ip_list:
18             ip_list[ip] = 1#第一次出现,次数=1
19         else:
20             ip_list[ip]+=1#不是第一次出现,出现次数+1
21     point = f.tell()#记住当前指针的位置
22     f.close()#关闭文件
23     for ip in ip_list:#如果ip在ip_list里
24         count = ip_list.get(ip)#找出ip对应的值
25         if count >= 50:#找到ip>50
26             print('ip地址【%s】有问题,请注意!' % ip)
27     time.sleep(60)#等待60s

猜你喜欢

转载自www.cnblogs.com/zhangxiaowai/p/12804341.html