原文地址:Python中文件读写之 w+ 与 r+ 到底有啥区别?

本文在原文基础上有删改。

r 是只读,只能读不能写,这是很明确的:

f = open("test.txt", 'r', encoding="utf-8")
f.write("we are heros\n")data = f.read()
print(data, type(data))
f.close()

这样的话报错是明显的:

io.UnsupportedOperation: not writable

但是变成r+呢,r+是可读写模式:

f = open("test.txt", 'r+', encoding="utf-8")
f.write("we are heros\n")data = f.read()
print(data, type(data))
f.close()

你试过会发现,什么也没打印出来,但同时也没有报错。到底是什么意思呢?

这是由文件读写机制问题造成的。当一个文件被读或者写一次后,游标指向的是整个文件的末尾。再次读时,是从游标所在的文件末尾开始读,这样的话肯定是什么都读不到了。那写完了接着读的正确姿势是什么呢?

f = open("test.txt", 'r+', encoding="utf-8")  # 文件句柄
f.write("we are heros\n")
f.seek(0)
data = f.read()
print(data, type(data))
f.close()

f.seek(0)使得游标回到文件的开头。这样,读取文件时就是从游标所在的文件开头位置读取了。

那么r+与w+又有啥区别呢?不能简单的理解为读写都可,它们在细节之处还是略有不同!

r+:

  • 先读后写,会在原有文本内容的后面添加写入内容。 因为读完时游标在文件最末尾。
  • 先写后读,是从头开始覆盖式写入,实际写多少内容,就覆盖多少内容。写入完成后,游标停留在写完的位置而不是文件的末尾,此时再进行读取,可以读出未被新内容覆盖的文档内容。

w+:

  • 先写后读,写完后游标就停留在文档的末尾,马上读的话什么内容都读取不到。应使用f.seek(0)让游标回到初始位置后,再开始读取。
  • 先读的话是读不出任何东西的,因为w+也是纯粹的覆盖写,在未使用写操作前,无论之前该文件里有什么内容,已经被完全置空,是空白的。所以只能先写后读。

Python文件读写 w+ 与 r+ 到底如何操作相关推荐

  1. python 文件读写w r a w+ r+ a+ rb wb ab总结

      r (读取) w (写入) a (追加) 存在:读取 存在:删除-->创建-->写入 存在:追加写入 不存在:报错 存在:创建-->写入 不存在:创建-->写入 + (可读 ...

  2. python文件读取模式_day-2 python 文件读写模式r,r+,w,w+,a,a+的区别

    r+和w+都是可读可写,区别在于r+读文件时,不会覆盖之前的内容,之前的内容能够读出来:w+读时,会覆盖之前的内容:所以读文件时,用r或者r+ #读操作 r 1 filepath = 'aa.log' ...

  3. python 文件读写with open模式r,r+ w,w+ a,a+区别详解

    python 文件读写with open模式r,r+ w,w+ a,a+区别详解 python中的 with open主要要来进行文件读写的操作 在 Python 中使用文件的关键函数是 open() ...

  4. python文件读写_python基础-文件读写'r' 和 'rb'区别

    一.Python文件读写的几种模式: r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢? 1.文件使用方式标识 'r':默认值,表示从文件读取数据. 'w':表示要向文件写入数据, ...

  5. 肝!超好懂的 Python 文件读写教程!

    (扫码关注) 作者:黄伟呢 源自:数据分析与统计学之美 1.文件读写的流程 1)类比windows中手动操作txt文档,说明python中如何操作txt文件? ① windows中手动操作txt文件的 ...

  6. Python 文件读写

    Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件 ...

  7. python文件读写及形式转化和CGI的简单应用

    一丶python文件读写学习笔记 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode) filename:包含了你要访问的文件名称的字符串值. mo ...

  8. python文件读写操作

    文章目录 1. open函数介绍 2. 读文件 3. 写文件 4. with 方式读写文件 对文件进行读写操作是很常见的 I/O 操作,在Python中我们可以通过内置函数 open来完成. 1. o ...

  9. python异步读写文件_一文彻底搞懂python文件读写

    Python文件读写 一,I/O操作 I/O在计算机中是指Input/Output,也就是Stream(流)的输入和输出.这里的输入和输出是相对于内存来说的,Input Stream(输入流)是指数据 ...

最新文章

  1. 博客园北京俱乐部第三次技术活动(2009/5/23)总结
  2. Google又发大招:高效实时实现视频目标检测
  3. 多进程fork()函数
  4. mysql查询当前库的实例名_oracle查询数据库名、实例名等
  5. javascript拖拽之从浏览器外拖拽(drag)
  6. Eric S. Raymond 五部曲 之 《开拓智域》
  7. .NET MVC第九章、Web Api Json序列化与反序列化
  8. std::stable_sort 和 std::for_each 的用法!按结构中某一字段值大小排续!
  9. ORACLE日期函数浅谈
  10. 哈工程和杭电计算机,哈工程算名校吗?为什么说千万别来哈工程?
  11. 机器学习的学习经验总结!
  12. c语言fread()函数
  13. 用ros中apriltag码进行定位(记录一下)
  14. 昇腾 (Ascend) AI 处理器:达芬奇架构
  15. 百度阳泉云计算中心二期开工,背后折射出什么?
  16. Tabular系列之问题1:如何利用其他人的账号进行权限测试?
  17. UE4 设置基础的车辆动力学
  18. Java实现的经典坦克大战小游戏
  19. 全数字仿真测试工具Edst
  20. 如何设置成为公网用户

热门文章

  1. linux安装Zeppelin
  2. 计算机免试生巢湖学院,关于公示计算机科学与工程学院2020届免试预推荐攻读研究生名单的通知...
  3. 把经纬度转换为Geohash(准确)
  4. html全屏枫叶飘落,jQuery飘落的枫叶
  5. 挑战用100美元赚100万美元
  6. Noah-MP模型 陆面生态水文模拟与多源遥感数据同化
  7. 读计算机专业广东那间学校好,读计算机专业广东省中职3+2学校那个好
  8. 图解PMP项目管理马斯洛需求层次理论在公司管理中的应用!
  9. 如何加快 Synology Drive 的同步过程?(外网速度极慢)
  10. 大陆出现首例iPhone 8电池爆裂事件;小米被指责盗用视频素材丨价值早报