详解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中import导入上一级目录模块及循环import问题的解决
Jun 04 Python
Python中类型检查的详细介绍
Feb 13 Python
python数据抓取分析的示例代码(python + mongodb)
Dec 25 Python
解决python os.mkdir创建目录失败的问题
Oct 16 Python
PyCharm代码提示忽略大小写设置方法
Oct 28 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
Python简单处理坐标排序问题示例
Jul 11 Python
利用Python检测URL状态
Jul 31 Python
python mysql 字段与关键字冲突的解决方式
Mar 02 Python
django中related_name的用法说明
May 20 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 Python
Python 使用Opencv实现目标检测与识别的示例代码
Sep 08 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
TMDPHP 模板引擎使用教程
2012/03/13 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
简单的php购物车代码
2020/06/05 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
汽车工程专业应届生求职信
2013/10/19 职场文书
简历中个人自我评价范文
2013/12/26 职场文书
寒假实习自荐信
2014/01/26 职场文书
法学个人求职信范文
2014/01/27 职场文书
心理学专业求职信
2014/06/16 职场文书
物流仓管员岗位职责
2015/04/01 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书