详解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 24 Python
Python中Numpy包的安装与使用方法简明教程
Jul 03 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
Nov 29 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
python读取并写入mat文件的方法
Jul 12 Python
Python中实现输入超时及如何通过变量获取变量名
Jan 18 Python
Python实现RabbitMQ6种消息模型的示例代码
Mar 30 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 Python
python 爬取百度文库并下载(免费文章限定)
Dec 04 Python
python 爬取天气网卫星图片
Jun 07 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 fckeditor 调用的函数
2009/06/21 PHP
JpGraph php柱状图使用介绍
2011/08/23 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
php实现等比例不失真缩放上传图片的方法
2016/11/14 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
jQuery常见开发技巧详细整理
2013/01/02 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
javascript模拟map输出与去除重复项的方法
2015/02/09 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
Python中的魔法方法深入理解
2014/07/09 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
2018/05/29 Python
python定时任务 sched模块用法实例
2019/11/04 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
python调用接口的4种方式代码实例
2019/11/19 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
html5 音乐播放器 audio 标签使用概述
2013/07/15 HTML / CSS
煤矿开采专业求职信
2014/07/08 职场文书
奖学金感谢信
2015/01/21 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
MySQL创建管理HASH分区
2022/04/13 MySQL