python文件读写的几种模式:

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'来表示换行。

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

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

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

  2. 文件读写'r'和'rb'区别

    不管何种语言在进行文件读写时,大家都知道有以下模式: r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢? 1.文件使用方式标识 'r':默认值,表示从文件读取数据. 'w':表示要 ...

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

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

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

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

  5. Python3 文件读写(持续更新)

    Python3 文件读写(持续更新) 创建文件+关闭文件+读取+写入 f = open('C:\\project\\python\\test1.txt', 'w', encoding='utf-8') ...

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

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

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

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

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

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

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

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

最新文章

  1. oracle 10035 err 942,案例:Oracle日志报错 Fatal NI connect error 12170 TNS-12535 TNS-00505
  2. centos --- phpunit 安装过程
  3. 国家新一代人工智能开放创新平台将参加重庆智博会
  4. Jsp 和 Servlet 有什么不同?
  5. java B2B2C源码电子商务平台 - Zuul回退机制
  6. java udp 接收不定长_JAVA UDP通信为什么只能接收一次数据,我想要时刻接收数据,并更新UI,大神们帮我看看程序吧?...
  7. CSS3与页面布局学习笔记(二)——盒子模型(Box Model)、边距折叠、内联与块标签、CSSReset
  8. 9008刷机模式写入超时刷机帮_刷机时没有成功,然后变成黑砖,usb接口直接变成未知设备~希望大神救助!...
  9. 【操作系统】进程的组织
  10. C语言中利用联合体巧妙处理数据
  11. 戴尔服务器哪1顶型号好,戴尔PowerEdge R730xd新一代服务器评测
  12. 海思3519A配置NFS文件系统(永久)
  13. 无根树的同构:Hash最小表示法(bzoj 4337: BJOI2015 树的同构)
  14. win10添加桌面图标到开始屏幕
  15. 新零售智慧供应链架构
  16. 服务器135、137、138、139、445等端口解释和关闭方法
  17. 《共同警戒区》观后感(r10笔记第97天)
  18. PageHelper关闭count语句优化
  19. 李白关于鸿蒙的诗,名诗欣赏:李白《把酒问月》之--青天有月来几时
  20. 全球与中国自动识别系统单元市场深度研究分析报告

热门文章

  1. python m http_非常简单的Python HTTP服务
  2. 边缘计算 — 边缘网络
  3. 集群的定义以及类别定义
  4. Servlet简介与Servlet和HttpServlet运行的流程
  5. js进阶 12-1 jquery的鼠标事件有哪些
  6. 江边上洗萝卜——一个个来
  7. 有赞11·11:全链路压测方案设计与实施详解
  8. 设计模式学习(二): 观察者模式 (C#)
  9. 历年双11实战经历者:我们是如何做数据库性能优化及运维-CloudDBA和天象
  10. [连载]JavaScript讲义(05)--- 数据处理