详解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 相关文章推荐
使用PYTHON创建XML文档
Mar 01 Python
Python异常学习笔记
Feb 03 Python
python获取一组汉字拼音首字母的方法
Jul 01 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 Python
python 剪切移动文件的实现代码
Aug 02 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
python监测当前联网状态并连接的实例
Dec 18 Python
Flask框架模板继承实现方法分析
Jul 31 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
NumPy排序的实现
Jan 21 Python
Python安装与卸载流程详细步骤(图解)
Feb 20 Python
基于python实现百度语音识别和图灵对话
Nov 02 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中json_encode中文编码问题分析
2011/09/13 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
python正则表达式re模块详细介绍
2014/05/29 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
用python做游戏的细节详解
2019/06/25 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
如何使用repr调试python程序
2020/02/28 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
八年级数学教学反思
2014/01/31 职场文书
爱牙日活动总结
2014/08/29 职场文书
建国大业观后感600字
2015/06/01 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python