不管何种语言在进行文件读写时,大家都知道有以下模式: r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢? 1.文件使用方式标识
'r':默认值,表示从文件读取数据。
'w':表示要向文件写入数据,并截断以前的内容
'a':表示要向文件写入数据,添加到当前内容尾部
'r+':表示对文件进行可读写操作(删除以前的所有数据)
'r+a':表示对文件可进行读写操作(添加到当前文件尾部)
'b':表示要读写二进制数据
2.读文件 进行读文件操作时,直到读到文档结束符(EOF)才算读取到文件最后,Python会认为字节\x1A(26)转换成的字符为文档结束符(EOF),故使用'r'进行读取二进制文件时,可能会出现文档读取不全的现象。
  举例如下:
     二进制文件中存在如下从低位向高位排列的数据:7F 32 1A 2F 3D 2C 12 2E 76
     如果使用'r'进行读取,则读到第三个字节,即认为文件结束。
     如果使用'rb'按照二进制位进行读取的,不会将读取的字节转换成字符,从而避免了上面的错误。

解决方案:
     二进制文件就用二进制方法读取'rb'

总结:
     使用'r'的时候,如果碰到'0x1A',就视为文件结束,就是EOF。使用'rb'则不存在这个问题,
即:如果你用二进制写入再用文件读出的话,如果其中存在'0x1A',就只会读出文件的一部分,
使用'rb'会一直读取文件末尾。
3.写文件 对于字符串x='abc\ndef',我们可用len(x)得到它的长度为7,\n我们称之为换行符,实际上是0x0A。当我们用'w'即文本方式写的时候,在windows平台上会自动将'0x0A'变成两个字符'0x0D','0x0A',即文件长度实际上变成8。当用'r'文本方式读取时,又自动的转换成原来的换行符。 如果换成'wb'二进制方式来写的话,则会保持一个字符不变,读取的时候也是原样读取。 所以如果用文本方式写入,用二进制方式读取的话,就要考虑这多出的一个字节了。'0x0D'也称回车符。 Linux下不会变,因为linux只使用'0X0A'来表示换行。

转载于:https://www.cnblogs.com/lgh1992314/archive/2013/02/16/5835185.html

文件读写'r'和'rb'区别相关推荐

  1. python3 文件读写 r 和 rb 区别

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

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

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

  3. 文件读写’r'和’rb’区别

    2012年08月22日 ⁄ 综合 ⁄ 共 849字 ⁄ 字号 小 中 大 ⁄ 评论关闭 不管何种语言在进行文件读写时,大家都知道有以下模式: r,rb,w,wb 那么在读写文件时,有无b标识的的主要区 ...

  4. python文件读写r+_python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)

    一.常用 'r':只读.该文件必须已存在. 'r+':可读可写.该文件必须已存在,写为追加在文件内容末尾. 'rb':表示以二进制方式读取文件.该文件必须已存在. 'w':只写.打开即默认创建一个新文 ...

  5. 文件读写r,rb,w,wb区别(对于换行符的处理)

    windows: 当用'w'方式写文件时,将\n变成两个字符\r\n写入文件. 当用'r'方式读文件时,将文件里的\r\n读入为\n. 使用'rb','wb'方式读写则不会发生上述转换 Linux: ...

  6. python读取文件r_python read文件的r和rb的区别

    r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢? 1.文件使用方式标识 'r':默认值,表示从文件读取数据. 'w':表示要向文件写入数据,并截断以前的内容 'a':表示要向文件 ...

  7. Python3 文件读写r,w,a

    f = open('yesterday','r+') # r+就是读写模式,先读一个文件,在最后写 !!最常用的 f = open('yesterday','w+') # r+就是写读模式,先创建一个 ...

  8. c语言文件读写r 的作用,C语言 读写二进制文件

    查找了比较多的资源, 发现没有办法把text 文件转成binary文件 仅作为记录,不过这个例子可以去除换行符.#include #include #define N 255 int main() { ...

  9. python中w和wb区别_一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)

    关于文件操作的几种常用方式,网上已有很多解说,内容很丰富,但也因此有些杂乱复杂.今天,我就以我个人的学习经验写一篇详细又易懂的总结文章,希望大家看完之后会有所收获. 一.各模式逐个分解 'r':只读. ...

最新文章

  1. Android的事件分发实例分析
  2. 微服务部署:蓝绿部署、滚动部署、灰度发布等部署方案对比与总结
  3. 【ABAP】CK11N相关Table
  4. 开源监控软件ganglia安装手册
  5. android调试是出现:Re-installation failed due to different application signatures
  6. 机器学习实战(用Scikit-learn和TensorFlow进行机器学习)(五)
  7. 一位跟我一样疑惑的同学~
  8. ASP.NET操作Excel
  9. Mac安装protobuf 流程
  10. Flink开发需要的环境
  11. 《Python核心编程》18.多线程编程(二)
  12. Android视频编码的坑
  13. iOS入门-公司通讯录项目(教你一步步完成一个公司通讯录)
  14. 接口性能测试方案分析
  15. 课程设计 天气预报数据可视化开发
  16. 互联网公司的完整开发流程是怎样的?
  17. TypeScript介绍
  18. desmos绘制心形图案
  19. 计算机学院迎接新生标语,大学迎接新生横幅标语:好巧我们见面了
  20. 灵活运用CSS开发技巧

热门文章

  1. Multiprocessing Manager
  2. MySQL Date and Time Types(日期和时间格式)
  3. docker 镜像命令
  4. php递归面包屑,php实现面包屑导航例子分享,_PHP教程
  5. php判断是否为数字_PHP知识点:从'xulei' == 0是否为真谈谈运算符===和==
  6. android改变下拉框字体颜色,AutoCompleteTextView下拉字体颜色
  7. 互联网薪资最新出炉,收藏了
  8. 万测试验机软件,万测TestStar®新秀®100kN微机控制电子万能试验机
  9. Spring Cloud 服务注册与发现 [ eureka ]
  10. 翻译连载 | JavaScript轻量级函数式编程-第5章:减少副作用 |《你不知道的JS》姊妹篇...