详解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引用DLL文件的方法
May 11 Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
python3使用flask编写注册post接口的方法
Dec 28 Python
简单了解python gevent 协程使用及作用
Jul 22 Python
从numpy数组中取出满足条件的元素示例
Nov 26 Python
python自动脚本的pyautogui入门学习
Apr 01 Python
python获取响应某个字段值的3种实现方法
Apr 30 Python
python程序需要编译吗
Jun 19 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
Python代码注释规范代码实例解析
Aug 14 Python
详解python os.path.exists判断文件或文件夹是否存在
Nov 16 Python
使用Python+Appuim 清理微信的方法
Jan 26 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查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
DOMAssitant最新版 DOMAssistant 2.5发布
2007/12/25 Javascript
捕获关闭窗口的脚本
2009/01/10 Javascript
JavaScript 撑出页面文字换行
2009/06/15 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
推荐20家国外的脚本下载网站
2011/04/28 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
jquery根据锚点offset值实现动画切换
2014/09/11 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
小程序实现搜索框
2020/06/19 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
讲解python参数和作用域的使用
2013/11/01 Python
Python中的默认参数详解
2015/06/24 Python
python和c语言的主要区别总结
2019/07/07 Python
通俗讲解python 装饰器
2020/09/07 Python
当当网软件测试笔试题
2015/11/24 面试题
大学教师年终总结的自我评价
2013/10/29 职场文书
物流仓储计划书
2014/01/10 职场文书
护士进修自我鉴定
2014/02/07 职场文书
班风口号
2014/06/18 职场文书
银行授权委托书范本
2014/10/04 职场文书
英语邀请函范文
2015/02/02 职场文书
总经理检讨书范文
2015/02/16 职场文书
2015年实习单位评语
2015/03/25 职场文书
人工作失职检讨书
2015/05/05 职场文书
Golang 入门 之url 包
2022/05/04 Golang
MySQL优化之慢日志查询
2022/06/10 MySQL