详解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实现的去除win下文本文件头部BOM的代码
Feb 10 Python
Python实现CET查分的方法
Mar 10 Python
Python中的filter()函数的用法
Apr 27 Python
你应该知道的python列表去重方法
Jan 17 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
python生成多个只含0,1元素的随机数组或列表的实例
Nov 12 Python
django项目登录中使用图片验证码的实现方法
Aug 15 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 Python
python中的列表和元组区别分析
Dec 30 Python
Python3 多线程(连接池)操作MySQL插入数据
Jun 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
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
ptyhon实现sitemap生成示例
2014/03/30 Python
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python for Informatics 第11章之正则表达式(二)
2016/04/21 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
利用Python如何生成便签图片详解
2018/07/09 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
财务管理专业推荐信
2013/11/19 职场文书
小学新学期教师寄语
2014/01/18 职场文书
3分钟演讲稿
2014/04/30 职场文书
课例研修方案
2014/05/31 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
大学生军训感言
2015/08/01 职场文书
2016年元旦寄语
2015/08/17 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技