详解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成对应的html示例分享
Apr 02 Python
python内存管理分析
Apr 08 Python
Python psutil模块简单使用实例
Apr 28 Python
Python中类的定义、继承及使用对象实例详解
Apr 30 Python
Python数据类型详解(二)列表
May 08 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
python简单实现操作Mysql数据库
Jan 29 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
使用Tensorflow实现可视化中间层和卷积层
Jan 24 Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
Nov 09 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
用Zend Encode编写开发PHP程序
2010/02/21 PHP
php Calender(日历)代码分享
2014/01/03 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
总结在前端排序中遇到的问题
2016/07/19 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
Python struct模块解析
2014/06/12 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
python保存文件方法小结
2018/07/27 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
pytorch 模型可视化的例子
2019/08/17 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
python如何停止递归
2020/09/09 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
英国行业制服供应商:Alexandra
2019/09/14 全球购物
Java程序开发中如何应用线程
2016/03/03 面试题
大一军训感言
2014/01/09 职场文书
宿舍保安职务说明书
2014/02/25 职场文书
捐款通知怎么写
2015/04/24 职场文书
教师聘用意向书
2015/05/11 职场文书
校友会致辞
2015/07/30 职场文书
诚实守信主题班会
2015/08/13 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python