详解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写日志封装类实例
Jun 28 Python
Python+django实现简单的文件上传
Aug 17 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
Mar 05 Python
解决django前后端分离csrf验证的问题
Feb 03 Python
python解释器spython使用及原理解析
Aug 24 Python
使用python快速实现不同机器间文件夹共享方式
Dec 22 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 Python
python 的topk算法实例
Apr 02 Python
Python venv虚拟环境配置过程解析
Jul 08 Python
如何利用python检测图片是否包含二维码
Oct 15 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 Python
Python必备技巧之函数的使用详解
Apr 04 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
Discuz 模板引擎的封装类代码
2008/07/18 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
2013/11/04 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
python连接mysql实例分享
2016/10/09 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
Python实现简单石头剪刀布游戏
2021/01/20 Python
Python自省及反射原理实例详解
2020/07/06 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
python 爬取免费简历模板网站的示例
2020/09/27 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
Jar包的作用是什么
2014/03/30 面试题
数据库基础的一些面试题
2012/02/25 面试题
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
易程科技软件测试笔试
2013/03/24 面试题
英文版网络工程师求职信
2013/10/28 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫
springboot读取resources下文件的方式详解
2022/06/21 Java/Android