python文件对象存取解析及方法
1.1 打开文件
python文件通过open()函数打开,返回一个文件对象。 1.1.1 open()
用法 open(file, mode="r")
描述
python的内置函数ope(),打开文件,返回一个文件对象。
参数
file:包括文件名的文件路径字符串。
mode:文件打开方式,默认为r,只读。
序号
模式
操作
文件不存在
处理文件内容
1
r
只读,用于读文件
报错
从头开始读
2
w
只写,用于写文件
创建
覆盖原文件内容,从头开始写
3
a
只写,用于写文件
创建
文件末尾追加内容
4
r+
读写,用于读写文件
报错
从头读,写时覆盖原文件内容
5
w+
读写,用于读写文件
创建
从头读,写时覆盖原文件内容
6
a+
读写,用于读写文件
创建
从头读,写时文件末尾追加内容
出参
返回文件对象
示例 >>> filepath=r"E:documentsF盘file.txt" # r,不存在报错 >>> f=open(filepath,"r") Traceback (most recent call last): File "", line 1, in f=open(filepath,"r") FileNotFoundError: [Errno 2] No such file or directory: "E:documentsF盘file.txt" # w,不存在创建 >>> f=open(filepath,"w") >>> filepath1=r"E:documentsF盘file1.txt" # r,不存在报错 >>> f1=open(filepath1,"r") Traceback (most recent call last): File "", line 1, in f1=open(filepath1,"r") FileNotFoundError: [Errno 2] No such file or directory: "E:documentsF盘file1.txt" # a,不存在创建 >>> f1=open(filepath1,"a")1.2 文件操作1.2.1 close()
描述
python文件的close()方法,用于关闭文件对象,关闭后不可调用file对象方法。
示例 >>> filepath=r"E:documentsF盘file.txt" >>> f=open(filepath,"r") >>> f.readline() "name:梯阅线条, " >>> f.close() # close()后,不可调用file方法 >>> f.readline() Traceback (most recent call last): File "", line 1, in f.readline() ValueError: I/O operation on closed file.1.2.2 write()
用法 write(text)
描述
python文件的write()方法,将字符串写入到文件,返回字符串长度。
参数
text:字符串
出参
返回字符串长度
示例 >>> filepath=r"E:documentsF盘file.txt" >>> s="""name:梯阅线条, des:软件测试开发""" >>> f=open(filepath,"w") >>> f.write(s) 21 >>> f.close() >>> len(s) 211.2.3 read()
用法 read(size=-1)
描述
python文件的read()方法,一次读取全部文件内容或指定个数的字符的文件内容。
参数
size:字符数,默认-1,或负数,表示读取整个文件,即一直读到EOF。
否则,读到size个字符为止。
出参
返回字符串
示例 >>> f=open(filepath,"r") >>> txt=f.read() >>> print(txt) name:梯阅线条, des:软件测试开发 >>> f.close() >>> f=open(filepath,"r") >>> txt=f.read(5) >>> print(txt) name: >>> f.close()1.2.4 readline()
用法 readline(size=-1)
描述
python文件的readline()方法,一次读取一行或者一行指定字符数的文件内容。
参数
size:字符数,默认为-1,表示读取一行,未送则读取一行。
大于0整数,则读取一行中的指定个数size字符。
出参
返回一行内容,遇到结束符EOF,返回空字符。
示例 >>> f=open(filepath,"r") >>> txt=f.readline() >>> txt "name:梯阅线条, " >>> f.readline() "des:软件测试开发" >>> f.readline() "" >>> f.close() >>> f=open(filepath,"r") >>> f.readline(5) "name:" >>> f.close() >>> f=open(filepath,"r") >>> f.readline(100) "name:梯阅线条, " >>> f.close()1.2.5 readlines()
用法 readlines()
描述
python文件的readlines()方法,一次读取全部行。
参数
略
出参
返回行列表。
示例 >>> f=open(filepath,"r") >>> txtlist=f.readlines() >>> txtlist ["name:梯阅线条, ", "des:软件测试开发, ", "url:tyxt.work "] >>> f.close()1.2.6 read()、readline()、readlines()比较
序号
方法
描述
使用情况
1
read()
一次读取全部文件内容,返回字符串
大数据,占内存,速度最快
2
readline()
一次读取一行,返回字符串
大数据,小内存,速度慢
3
readlines()
一次读取全部文件内容,返回行列表
大数据,占内存,速度居中 1.2.7 for
描述
python文件通过for循环遍历文件行。
示例 >>> f.close() >>> f=open(filepath,"r") >>> for line in f: print(line,end="") name:梯阅线条, des:软件测试开发, url:tyxt.work >>> f.close()1.3 文件存储并解析python对象1.3.1 手动存储和解析
描述
python文件以字符串方式存储python对象,再读取文件内容解析为python对象。
示例 >>> s="梯阅线条" >>> L=[91,92,93] >>> D={"a":1,"b":2,"c":3} # write前转为str >>> f.write(s+" ") 5 >>> f.write(str(L)+" ") 13 >>> f.write(str(D)+" ") 25 >>> f.close() >>> f=open(filepath,"r") >>> txt=f.read() >>> print(txt) 梯阅线条 [91, 92, 93] {"a": 1, "b": 2, "c": 3} >>> f.close() >>> f=open(filepath,"r") >>> line1s=f.readline().rstrip() >>> line1s "梯阅线条" >>> line2L=f.readline() >>> line2L "[91, 92, 93] " # eval执行python表达式或语句,生成对象 >>> line2L=eval(line2L) >>> line2L [91, 92, 93] >>> line3D=f.readline() >>> line3D "{"a": 1, "b": 2, "c": 3} " >>> line3D=eval(line3D) >>> line3D {"a": 1, "b": 2, "c": 3} >>> type(line1s),type(line2L),type(line3D) (, , )1.3.2 pickle模块1.3.2.1 dump()
用法 dump(obj, file, protocol=None)
描述
python的pickle.dump()方法,可以将python的任何对象存储到文件中,dump()后的文件内容可读性差,一般无法识别,也叫序列化对象。
多个对象,就多次调用dump()。
参数
obj:任何python对象;
file:文件对象,需以二进制模式(b)打开;
protocol:0-ASCII协议,1-老式二进制,2-新二进制协议
示例 filepath=r"E:documentsF盘file.pkl" d={"a":1,"b":2} f=open(filepath,"wb") import pickle pickle.dump(d,f) f.close()1.3.2.2 load()
用法 load(file)
描述
python的pickle.load()方法,从file文件对象读取内容,并生成与存储时相同的对象。
参数
file:文件对象,需以二进制模式(b)打开;
示例 import pickle >>> filepath=r"E:documentsF盘file.pkl" >>> d={"a":1,"b":2} >>> l=[91,92] >>> f=open(filepath,"wb") >>> pickle.dump(d,f) >>> pickle.dump(l,f) >>> f.close() >>> f=open(filepath,"rb") >>> data=pickle.load(f) >>> type(data) >>> print(data) {"a": 1, "b": 2} >>> d1=pickle.load(f) >>> type(d1) >>> print(d1) [91, 92] >>> d2=pickle.load(f) Traceback (most recent call last): File "", line 1, in d2=pickle.load(f) EOFError: Ran out of input
版权声明© :
本文首发 微信公众号:梯阅线条 ,
原创不易,转载请注明出处。
更多内容参考python学习笔记或软件测试开发目录。
日照游记,分享一些旅行中打卡地今年打卡了一座新城市日照,记录了一些在这里的快乐时光,都发生在这些地方旅行小记日照好玩的地方实在是太多了,但胜在这里的景点都比较集中,在市区坐公交或者骑小电驴,都很方便,万一坐出租
反复出现手脚发麻?可能是心梗脑梗的征兆在日常生活中,我们经常会遇到手脚发麻的情况,可能是睡觉姿势不正确手臂被长时间压迫如厕蹲久了等等原因,造成的手足局部供血不足而出现发麻的现象。这类发麻一般会在短时间内消除,不会有什么
来了!多特双子星引足坛争抢,利物浦成最大赢家,三叉戟重聚英超利物浦整个赛季都受到伤病的困扰,因为他们在英超联赛中努力保持成绩稳定,尽管如此他们的夏季转会还是受到了相当多的批评。利物浦多次批评,马内的位置没有被填补,今年夏天从本菲卡签下了创纪
明天,记得来加油!理由有10个1hr如果你不开心就来加油站工作那样就会有很多人跟你说加油还会给你钱真好2hr给不了你世界的全部温柔但能送你一张加油卡一路陪你加油3hr有些人走着走着就走散了但我一直都在原地等你因
小米新品体验2。5K全彩夜视,支持声光报警,24小时全天候守护现在不管是小区还是农村老家,大家都会选择安装摄像头用来做家庭安防,以前安装的传统摄像头,因为没有联网功能,只能通过回放查看监控情况,随着科技水平进步,越来越多的支持网络功能的智能摄
3000点保卫战?后面我们又该怎么办?周末利好频发,国内主要是降低融资利率扩大融资融券标的。但是由于上两周的小幅度涨幅,大盘已经到达日线级别的超买区间,有日线级别的调整需求,一般日线级别调整37天,最长半个月。外围因素
2022中国体坛两大失意巨星,陈雨菲入选,李盈莹令人唏嘘2022年步入尾声,虽然部分体育赛事仍在展开,中国体坛最失意的巨星却已经呼之欲出。笔者选定的两位巨星分别是羽毛球奥运冠军陈雨菲,以及中国女排的核心李盈莹。陈雨菲一不小心成为收银员2
加仓茅台!万亿巨头出手中国基金报格林日前贵州茅台发布了三季报显示,单季度看,贵州茅台三季度实现营业收入295。43亿元,同比增长15。61归属于上市公司股东的净利润146。06亿元,同比增长15。81。
互联网小贷融资凶猛,ABS被密集批复作者子卿出品消费金融频道作为目前互联网小贷最主要的补血手段之一,ABS这几年风头很大,不过批与不批什么时候批多少等最终还是掌握在监管的手中。近期,深交所上交所密集回复了一批网络小贷
鸿蒙OS有一杀器没放,否则装机量将翻倍!但华为不会这么干大家都知道,一个手机操作系统(OS)要想生存,很依赖规模级的用户与生态链。华为的鸿蒙系统(HarmonyOS)备受用户推崇,特别是在中国市场,就连不是华为手机的国人都很支持,有这么
手机出货量同比下滑23,看各品牌如何玩转抖音营销寻求突破?导读经过十余年的发展,智能手机市场逐渐成熟,处理器系统外观屏幕显示续航存储摄影摄像等众多技术功能渐趋完善,缺乏突破性的创新。而这也导致用户换机欲望下降,换机周期不断延长,据相关数据