python学习笔记(三):文件操作和集合
对文件的操作分三步:
1、打开文件获取文件的句柄,句柄就理解为这个文件
2、通过文件句柄操作文件
3、关闭文件。
文件基本操作:
f = open('file.txt','r') #以只读方式打开一个文件,获取文件句柄,如果是读的话,r可以不写,默认就是只读,
在python2中还有file方法可以打开文件,python3中file方法已经没有了,只有open
frist_line = f.readline()#获取文件的第一行内容,返回的是一个list
print(frist_line)#打印第一行
res = f.read()#获取除了第一行剩下的所有文件内容
print(res)
f.close()#关闭文件
打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,后面通过此文件句柄对该文件操作,
打开文件的模式有:
r,只读模式(默认)。
w,只写模式。【不可读;不存在则创建;存在则删除内容;】
a,追加模式。【不可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
r+,【可读、可写;可追加,如果打开的文件不存在的话,会报错】
w+,【写读模式,使用w+的话,已经存在的文件内容会被清空,可以读到已经写的文件内容】
a+,【追加读写模式,不存在则创建;存在则只追加内容;】
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
rU
r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
rb
wb
ab
文件操作方法:
f = open('file.txt','r+',encoding='utf-8')#encoding参数可以指定文件的编码
f.readline()#读一行
f.readable()#判断文件是否可读
fr.writable()#判断文件是否可写
fr.encoding#打印文件的编码
f.read()#读取所有内容,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆,指针后面的内容
f.readlines()#读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
f.tell()#获取当前文件的指针指向
f.seek(0)#把当前文件指针指向哪
f.write('爱情证书')#写入内容
f.fulsh()#写入文件后,立即从内存中把数据写到磁盘中
f.truncate()#清空文件内容
f.writelines(['爱情证书','孙燕姿'])#将一个列表写入文件中
f.close()关闭文件
大文件时,读取文件高效的操作方法:
用上面的read()和readlines()方法操作文件的话,会先把文件所有内容读到内存中,这样的话,内存数据一多,非常卡,高效的操作,就是读一行操作一行,读过的内容就从内存中释放了
f = open('file.txt')
for line in f:
print(line)
这样的话,line就是每行文件的内容,读完一行的话,就会释放一行的内存
with使用:
在操作文件的时候,经常忘了关闭文件,这样的就可以使用with,它会在使用完这个文件句柄之后,自动关闭该文件,使用方式如下:
with open('file.txt','r') as f:#打开一个文件,把这个文件的句柄付给f
for line in f:
print(line)
with open('file.txt') as fr,with open('file_bak','w') as fw: #这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件
for line in fr:#循环file.txt中的每一行
fw.write(line)#写到file_bak文件中
修改文件:
修改文件的话,有两种方式,一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容;第二种是把修改后的文件内容写到一个新的文件中
第一种
with open('file.txt','r+') as fr:
res = fr.read()
new_res = res.replace('我','me')
fr.write(new_res)
第二种
with open('file.txt') as fr,with open('file_new','w') as fw: #这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件
for line in fr:#循环file.txt中的每一行
new_line = line.replace('我','me')
fw.write(new_line)#写到file_bak文件中
集合:
集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不重复的,也就是说集合中是没有重复的数据
集合的作用:
1、它可以把一个列表中重复的数据去掉,而不需要你再写判断
2、可以做关系测试,比如说有两个班,一个性能测试班,一个是接口测试班的,想找出来既学习了性能又学习了接口测试的同学,就可以用集合
定义集合
list = [2,3,1,2,3,4]
s_list = set(list)#这样就定义了一个集合
set1 = set([1,3,4,5,6])#这种方式和上面的都是把list转换成一个集合
set2={'hehe','hehe1','hehe3'}#这种方式是直接定义一个集合
集合操作
list1 = {1, 2, 3, 4, 5, 6, 9}
list2 = {2, 3, 4, 6, 1}
list3 = {1, 2, 3}
print(list1.intersection(list2)) # 取交集,也就是取list1和list2中都有的
print(list1 & list2)# 取交集
print(list1.union(list2)) # 取并集,也就是把list1和list2合并了,然后去除重复的
print(list1 | list2)# 取并集
print(list1.difference(list2)) #取差集 在list中存在,在list2中没有的
print(list1 - list2)
print(list3.issubset(list1))#判断list3是不是list1的子集
print(list1.issuperset(list3))#判断list1是不是list3的父集
print(list1.isdisjoint(list3))#判断list1和list3是否有交集
print(list1.symmetric_difference(list2))#对称差集,输出两个列表中都没有的值,也就是把两个集合中相同的去掉
print(list1 ^ list2)
list1.add(888)#添加元素
list1.update([777,666,666])
list1.remove(777)#删除元素,如果元素不存在会报错
list1.pop()#删除一个随机的元素,并返回删除的元素
list1.discard('dddd')#如果删除的元素存在,删除,不存在不做处理
python学习笔记(三):文件操作和集合的更多相关文章
- python学习笔记:文件操作和集合
一.文件操作 文件读写步骤:有一个文件,打开文件,操作文件读写文件,关闭文件. python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例) 模式 可做操作 若文件不存在 是否覆盖 r ...
- python学习笔记三 文件操作(基础篇)
文件操作 打开文件 open(name[,mode[,buffering]]) open函数使用一个文件名作为强制参数,然后返回一个文件对象.[python 3.5 把file()删除掉] w ...
- python学习笔记之文件操作(三)
这篇博客小波主要介绍一下python对文件的操作 对文件的操作主要分为三步: 1.打开文件获取文件的句柄,句柄也是文件描述符 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件,是小波随写的周杰伦 ...
- Python学习笔记 - day5 - 文件操作
Python文件操作 读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文 ...
- python学习笔记4(文件操作)
文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”) 直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...
- python学习笔记(六)---文件操作与异常处理机制
文件读取 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创建一个文件,它包含精确到小数点后30位的圆周率值,且在小数点后每10位处都换行: pi_digits.txt 3.14159 ...
- 我的Python学习笔记之文件操作
一,Python的文件类型有两种 1.文本文件 2.二进制文件 文件的操作: 1.打开文件,获取文件的控制权 2.读写文件 3.关闭文件,释放文件的控制权,如果不释放控制权,那么其他程序就不能访问此文 ...
- python学习笔记(五)-文件操作2
一.文件修改 现有文件file.txt,内容如下:二十四节气歌春雨惊春清谷天,夏满芒夏暑相连.秋处露秋寒霜降,冬雪雪冬小大寒.上半年逢六廿一,下半年逢八廿三.每月两节日期定,最多相差一二天.要求:将文 ...
- python学习笔记(四)-文件操作
文件读写"""一.文件打开有3种方式 1.读 r #如果打开的文件的时候没有指定模式,那么默认是读 读写模式 r+,只要沾上r,文件不存在的时候,打开都会报错 2.写 w ...
随机推荐
- Ajax-02 iframe实现伪“Ajax”
需求: 用户输入URL,使用iframe将目标URL的内容加载到页面指定位置(局部刷新) <!DOCTYPE html> <html lang="en"> ...
- 三十三 Python分布式爬虫打造搜索引擎Scrapy精讲—数据收集(Stats Collection)
Scrapy提供了方便的收集数据的机制.数据以key/value方式存储,值大多是计数值. 该机制叫做数据收集器(Stats Collector),可以通过 Crawler API 的属性 stats ...
- CentOS7 安装ifconfig
As we all know, “ifconfig” command is used to configure a network interfaces in GNU/Linux systems. I ...
- 【lightoj-1046】Rider(BFS)
链接:http://www.lightoj.com/volume_showproblem.php?problem=1046 题意: 给m*n的棋盘,数字k代表这个位置上有棋子,并且一步可以连续跳1-k ...
- Ti CC2540蓝牙模块学习笔记整理
接触CC2540几天,终于有了初步的理解,现将笔记整理如下,只是皮毛,如有错误,还请指正,还有好多没闹明白的地方,以后应该还会继续向里面更新~ 一.整体 1.TI的蓝牙平台支持2种协议栈/应用配置:单 ...
- opencv 边界确定函数
多边形逼近,用嘴贴切的多边形标识 void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool c ...
- php果然是世界上最好的语言
这两天参加Hackathon,作为一个什么都半吊子的家伙,两人小队伍被逼上岗,于是我不得不着手写代码.由此,我体验到了php的魔力-- 首先,我深刻地意识到了更新版本的重要性. 偷懒不想搭Apache ...
- 随机获取图片的api接口
http://lorempixel.com/1600/900 https://unsplash.it/1600/900?random(国内加载略慢) https://uploadbeta.com/ap ...
- HDU - 6201:transaction transaction transaction(最长路)
Kelukin is a businessman. Every day, he travels around cities to do some business. On August 17th, i ...
- 关于fft后图像的纵轴问题
fft后如果纵轴是abs后的值,且为双边图像,那么纵轴表示的就是此频率下信号的幅值*N/2的值,也就是说,如果有一正弦信号,幅度为1,假如fft了50个点,那么此信号频率的幅度就是1*50/2=25. ...