文件操作分为:

1、打开文件,如果文件在当前目录下直接写文件名,如果文件在其他目录下写绝对路径

2、读/写文件

3、关闭文件

一、文件打开模式

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

二、读文件

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

三、写文件

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

四、监控日志小练习

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

五、排序小练习

 1 #根据每个人跑步的公里数 重新排序每个人的排名,格式 1. 毛多锁 500km
2 #1、打开文件
3 #2、将文件的内容循环读取,存放到字典中
4 #3、给字典排序
5 #4、将排序好的字典写到一个新的文件中
6
7 run_scores = {}
8 f = open('数据.txt',encoding='utf-8')
9 for userinfo in f:
10 temp1 = userinfo.split()#用空格分割,将名字和跑步公里数分割
11 run_scores[temp1[1]] = float(temp1[2])#将文件中的内容放入字典中
12
13 f.close()#关闭文件
14 print(run_scores)
15 #将字典进行降序排序
16 run_scores_sort = dict(sorted(run_scores.items(), key=lambda x: x[1],reverse=True))
17 print(run_scores_sort)
18 new_file = open('排序.txt','w',encoding='utf-8')#打开一个新的文件,用来存放排序后的内容
19 count = 0#定义编号
20 for temp2 in run_scores_sort:#遍历排序后的字典
21 count += 1
22 runScore = run_scores_sort[temp2]#获取跑步总公里数
23 result = '%d. %s %.2fkm\n' % (count,temp2,runScore)
24 print(result)
25 new_file.write(result)#将排序后的结果写入新的文件
26
27 new_file.close()

执行结果如图所示:

六、注册小练习

 1 #注册用户,注册的逻辑和以前一样,注册成功的用户写到users.txt里面,写的数据格式和文件里面的一样
2 #1、输入注册的账号
3 #2、注册的账号不能为空
4 #3、注册的账号不能存在于users.txt文件中
5 #4、注册的密码,确认密码不能为空
6 #5、密码与确认密码一致,才能注册成功
7 #6、将注册的账号,密码追加到users.txt文件中
8 f = open(r'users.txt', 'r', encoding='utf-8') # 将打开文件模式定义为r:只读
9 results = f.readlines()#将文件内容读取到list中
10 f.close() # 关闭文件
11 for i in range(3):
12 checkUser = False#定义一个检查用户是否存在的flag
13 username = input('请输入注册的账号:').strip()#获取输入的账号
14 if username:#注册账号不为空,则继续验证
15 for line in results:#循环读取文件,检查注册账号是否存在
16 userinfo = line.split(',')#分割
17 if username == userinfo[0]:
18 checkUser = True
19 print('输入的账号已存在!!!')
20
21 if not checkUser:#当用户不存在时,进行注册
22 password = input('请输入注册的密码:').strip() # 获取输入的密码
23 rePassword = input('请输入确认密码:').strip() # 获取输入的确认密码
24 if password and rePassword:
25 if password == rePassword:
26 print('恭喜你,注册成功!')
27 new_file = open(r'users.txt', 'a', encoding='utf-8') # 将打开文件模式定义为a:可追加
28 tempResult = '%s,%s\n' % (username, password)
29 print(tempResult)
30 new_file.write(tempResult)
31 new_file.close() # 关闭文件
32 break
33 else:
34 print('两次输入的密码不一致!')
35 else:
36 print('密码/确认密码不能为空')
37 else:
38 print('输入的账号不能为空')
39
40 else:
41 print('错误次数已达上限!')

python使用笔记003-文件操作(一)的更多相关文章

  1. python学习笔记4(文件操作)

    文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”)      直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...

  2. python学习笔记三 文件操作(基础篇)

    文件操作 打开文件 open(name[,mode[,buffering]])   open函数使用一个文件名作为强制参数,然后返回一个文件对象.[python 3.5 把file()删除掉]   w ...

  3. Python学习笔记 - day5 - 文件操作

    Python文件操作 读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文 ...

  4. python学习笔记:文件操作和集合

    一.文件操作 文件读写步骤:有一个文件,打开文件,操作文件读写文件,关闭文件. python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例) 模式 可做操作 若文件不存在 是否覆盖 r ...

  5. python学习笔记(六)---文件操作与异常处理机制

    文件读取 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创建一个文件,它包含精确到小数点后30位的圆周率值,且在小数点后每10位处都换行: pi_digits.txt 3.14159 ...

  6. python学习笔记之文件操作(三)

    这篇博客小波主要介绍一下python对文件的操作 对文件的操作主要分为三步: 1.打开文件获取文件的句柄,句柄也是文件描述符 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件,是小波随写的周杰伦 ...

  7. python学习笔记(三):文件操作和集合

    对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 文件基本操作: f = open('file.txt','r') #以只读方式打开一个 ...

  8. 我的Python学习笔记之文件操作

    一,Python的文件类型有两种 1.文本文件 2.二进制文件 文件的操作: 1.打开文件,获取文件的控制权 2.读写文件 3.关闭文件,释放文件的控制权,如果不释放控制权,那么其他程序就不能访问此文 ...

  9. python学习笔记(四)-文件操作

    文件读写"""一.文件打开有3种方式 1.读 r #如果打开的文件的时候没有指定模式,那么默认是读 读写模式 r+,只要沾上r,文件不存在的时候,打开都会报错 2.写 w ...

  10. python学习笔记(五)-文件操作2

    一.文件修改 现有文件file.txt,内容如下:二十四节气歌春雨惊春清谷天,夏满芒夏暑相连.秋处露秋寒霜降,冬雪雪冬小大寒.上半年逢六廿一,下半年逢八廿三.每月两节日期定,最多相差一二天.要求:将文 ...

随机推荐

  1. CVPR2018论文看点:基于度量学习分类与少镜头目标检测

    CVPR2018论文看点:基于度量学习分类与少镜头目标检测 简介 本文链接地址:https://arxiv.org/pdf/1806.04728.pdf 距离度量学习(DML)已成功地应用于目标分类, ...

  2. 用NumPy genfromtxt导入数据

    用NumPy genfromtxt导入数据 NumPy provides several functions to create arrays from tabular data. We focus ...

  3. MindSpore特性支持类

    MindSpore特性支持类 Q:请问MindSpore支持梯度截断吗? A:支持,可以参考梯度截断的定义和使用. Q:如何在训练神经网络过程中对计算损失的超参数进行改变? A:暂时还未有这样的功能. ...

  4. Python分析离散心率信号(上)

    Python分析离散心率信号(上) 一些理论和背景 心率包含许多有关信息.如果拥有心率传感器和一些数据,那么当然可以购买分析包或尝试一些可用的开源产品,但是并非所有产品都可以满足需求.也是这种情况.那 ...

  5. Linux基础_vim命令

    简介:Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. vi/vim 共分为三种模式,分别是命令模式(Command mode)也叫 ...

  6. Spring Cloud04: RestTemplate的使用

    上一篇我们已经学会了如何创建一个服务提供者,那么这一篇我们来创建一个服务消费者,实现思路是先通过Spring boot搭建一个微服务应用,再通过Eureka Client把它注册到注册中心Eureka ...

  7. java后端知识点梳理——Redis

    redis都支持哪些数据类型?应用场景有哪些? redis支持五种数据类型作为其Value,redis的Key都是字符串类型的. string:redis 中字符串 value 最大可为512M.可以 ...

  8. Java IO学习笔记四:Socket基础

    作者:Grey 原文地址:Java IO学习笔记四:Socket基础 准备两个Linux实例(安装好jdk1.8),我准备的两个实例的ip地址分别为: io1实例:192.168.205.138 io ...

  9. 俄罗斯方块(c++)

    这个俄罗斯方块是用c++基于windows控制台制作的. 源码地址:https://github.com/Guozhi-explore 话不多说,先上图感受一下:(控制台丑陋的界面不是我的锅emmm) ...

  10. MIT6.828-LAB1 : PC启动

    Lab1 1. 先熟悉PC的物理地址空间 这里其实有很多可以说的,不过先简单描述一下吧.从0x00000000到0x00100000这1mb的地址空间时机器处于16位的实模式.也就是说这个时候机器的汇 ...