圆月山庄资源网 Design By www.vgjia.com
Python 文件操作的详解及实例
一、文件操作
1、对文件操作流程
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
现有文件如下:
昨夜寒蛩不住鸣。 惊回千里梦,已三更。 起来独自绕阶行。 人悄悄,帘外月胧明。 白首为功名,旧山松竹老,阻归程。 欲将心事付瑶琴。 知音少,弦断有谁听。 f = open('小重山') #打开文件 data=f.read()#获取文件内容 f.close() #关闭文件
注意:if in the win,hello文件是utf8保存的,打开文件时open函数是通过操作系统打开的文件,而win操作系统默认的是gbk编码,所以直接打开会乱码,需要f=open(‘hello',encoding='utf8'),hello文件如果是gbk保存的,则直接打开即可。
2、文件打开模式
Character Meaning
'r' open for reading (default) 'w' open for writing, truncating the file first 'x' create a new file and open it for writing 'a' open for writing, appending to the end of the file if it exists 'b' binary mode 't' text mode (default) '+' open a disk file for updating (reading and writing) 'U' universal newline mode (deprecated)
先介绍三种最基本的模式:
# f = open('小重山2','w') #打开文件 # f = open('小重山2','a') #打开文件 # f.write('莫等闲1\n') # f.write('白了少年头2\n') # f.write('空悲切!3')
3、文件具体操作
f = open('小重山') #打开文件 # data1=f.read()#获取文件内容 # data2=f.read()#获取文件内容 # # print(data1) # print('...',data2) # data=f.read(5)#获取文件内容 # data=f.readline() # data=f.readline() # print(f.__iter__().__next__()) # for i in range(5): # print(f.readline()) # data=f.readlines() # for line in f.readlines(): # print(line) # 问题来了:打印所有行,另外第3行后面加上:'end 3' # for index,line in enumerate(f.readlines()): # if index==2: # line=''.join([line.strip(),'end 3']) # print(line.strip()) #切记:以后我们一定都用下面这种 # count=0 # for line in f: # if count==3: # line=''.join([line.strip(),'end 3']) # print(line.strip()) # count+=1 # print(f.tell()) # print(f.readline()) # print(f.tell())#tell对于英文字符就是占一个,中文字符占三个,区分与read()的不同. # print(f.read(5))#一个中文占三个字符 # print(f.tell()) # f.seek(0) # print(f.read(6))#read后不管是中文字符还是英文字符,都统一算一个单位,read(6),此刻就读了6个中文字符 #terminal上操作: f = open('小重山2','w') # f.write('hello \n') # f.flush() # f.write('world') # 应用:进度条 # import time,sys # for i in range(30): # sys.stdout.write("*") # # sys.stdout.flush() # time.sleep(0.1) # f = open('小重山2','w') # f.truncate()#全部截断 # f.truncate(5)#全部截断 # print(f.isatty()) # print(f.seekable()) # print(f.readable()) f.close() #关闭文件
接下来我们继续扩展文件模式:
# f = open('小重山2','w') #打开文件 # f = open('小重山2','a') #打开文件 # f.write('莫等闲1\n') # f.write('白了少年头2\n') # f.write('空悲切!3') # f.close() #r+,w+模式 # f = open('小重山2','r+') #以读写模式打开文件 # print(f.read(5))#可读 # f.write('hello') # print('------') # print(f.read()) # f = open('小重山2','w+') #以写读模式打开文件 # print(f.read(5))#什么都没有,因为先格式化了文本 # f.write('hello alex') # print(f.read())#还是read不到 # f.seek(0) # print(f.read()) #w+与a+的区别在于是否在开始覆盖整个文件 # ok,重点来了,我要给文本第三行后面加一行内容:'hello 岳飞!' # 有同学说,前面不是做过修改了吗"htmlcode">#昨夜寒蛩不住鸣. f = open('test','r',) #以写读模式打开文件 f.read(3) # f.seek(3) # print f.read(3) # 夜 # f.seek(3,1) # print f.read(3) # 寒 # f.seek(-4,2) # print f.read(3) # 鸣在py3中:
# test: 昨夜寒蛩不住鸣. f = open('test','rb',) #以写读模式打开文件 f.read(3) # f.seek(3) # print(f.read(3)) # b'\xe5\xa4\x9c' # f.seek(3,1) # print(f.read(3)) # b'\xe5\xaf\x92' # f.seek(-4,2) # print(f.read(3)) # b'\xe9\xb8\xa3' #总结: 在py3中,如果你想要字符数据,即用于观看的,则用r模式,这样我f.read到的数据是一个经过decode的 # unicode数据; 但是如果这个数据我并不需要看,而只是用于传输,比如文件上传,那么我并不需要decode # 直接传送bytes就好了,所以这个时候用rb模式. # 在py3中,有一条严格的线区分着bytes和unicode,比如seek的用法,在py2和py3里都是一个个字节的seek, # 但在py3里你就必须声明好了f的类型是rb,不允许再模糊. #建议: 以后再读写文件的时候直接用rb模式,需要decode的时候仔显示地去解码.4、with语句
为了避免打开文件后忘记关闭,可以通过管理上下文,即:
with open('log','r') as f: pass如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:
with open('log1') as obj1, open('log2') as obj2: pass2如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月07日
2024年11月07日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]