详解python中各种文件打开模式


Posted in Python onJanuary 19, 2020

在python中,总的来说有三种大的模式打开文件,分别是:a, w, r

当以a模式打开时,只能写文件,而且是在文件末尾添加内容。

当以a+模式打开时,可以写文件,也可读文件,可是在读文件的时候,会发现读出来的数据为空,是因为a+模式是在文件末尾添加内容,所以其指针已经指到了文件末尾,所以读出来的数据就是空的。

# 在文件末尾添加数据
f = open('test.txt','a+')
f.write('test')
f.close()
# 读出数据为空
f = open('test.txt','a+')
print(f.read())
# 读出数据
f = open('test.txt','a+')
f.seek(0) # 将指针移动到首个字符前
print(f.read())

当以w模式打开时,只能写文件,而且会直接将之前的数据给丢失。

当以w+模式,可读可写,但是如果想读取的内容的话,只能在写内容的时候,同时读取其中的内容,相当于只能读取出你刚刚写入的内容,没有意义

f = open('test.txt', 'w+')
f.write('我不会喜欢你')
f.seek(0)
print(f.read())
f.close()

当以r模式打开文件时,只能读取文件。

当以r+模式打开文件时,可读可写文件。如果是读取文件,会从首个字符开始读取数据,如果是以该模式打开文件,就写数据,则会从首个字符开始写,并一个一个字符的向后面覆盖。如果想从末尾添加内容,则可先read()然后在向其中添加数据。

# 第一次写入内容
f = open('test.txt', 'r+')
f.write('我不会喜欢你') # 内容为:我不会喜欢你
f.close()
# 第二次写入
f = open('test.txt', 'r+')
f.write('其实我')
f.close()   # 内容为: 其实我喜欢你

# 第三次写入
f = open('test.txt', 'r+')
print(f.read())  # 内容为: 其实我喜欢你
f.write(', I love you')
f.close() # 内容为: 其实我喜欢你, I love you

自我感觉r+模式可以多加应用。

ps:下面看下python文件打开的几种访问模式

访问模式 说明
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

总结

以上所述是小编给大家介绍的python中各种文件打开模式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
剖析Django中模版标签的解析与参数传递
Jul 21 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
Python IDLE入门简介
Dec 08 Python
tensorflow实现简单的卷积神经网络
May 24 Python
Python中fnmatch模块的使用详情
Nov 30 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
python 日期排序的实例代码
Jul 11 Python
python类的实例化问题解决
Aug 31 Python
python实现UDP协议下的文件传输
Mar 20 Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 Python
Python实现一个优先级队列的方法
Jul 31 Python
python用tkinter实现一个gui的翻译工具
Oct 26 Python
python opencv如何实现图片绘制
Jan 19 #Python
python实现加密的方式总结
Jan 19 #Python
TensorFlow tensor的拼接实例
Jan 19 #Python
python通过opencv实现图片裁剪原理解析
Jan 19 #Python
Python 一行代码能实现丧心病狂的功能
Jan 18 #Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 #Python
Pytorch 实现数据集自定义读取
Jan 18 #Python
You might like
PHP 采集程序 常用函数
2008/12/18 PHP
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
jQuery基础框架浅入剖析
2012/12/27 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
浅谈Vue数据绑定的原理
2018/01/08 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
python模块smtplib学习
2018/05/22 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
python flask框架实现重定向功能示例
2019/07/02 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
python基于socket函数实现端口扫描
2020/05/28 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
Python里面如何实现tuple和list的转换
2012/06/13 面试题
大学班级干部的自我评价分享
2014/02/10 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
工作态度检讨书范文
2015/05/06 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书