解析文本文件 "r" 与 "rb" 模式的区别(Python)

r,rb 那么在读文件时,有无b标识的的主要区别在哪里呢?

 

1、文件使用方式标识

'r':默认值,表示从文件读取数据。
'b':表示要读写二进制数据

 

2、读文件 进行读文件操作时,直到读到文档结束符(EOF)才算读取到文件最后,Python会认为字节\x1A(26)转换成的字符为文档结束符(EOF),

      故使用'r'进行读取二进制文件时,可能会出现文档读取不全的现象。

 

示例:
     二进制文件中存在如下从低位向高位排列的数据:7F 32 1A 2F 3D 2C 12 2E 76
     如果使用'r'进行读取,则读到第三个字节,即认为文件结束。
     如果使用'rb'按照二进制位进行读取的,不会将读取的字节转换成字符,从而避免了上面的错误。


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

一句话:

  • r:Python 将会按照编码格式进行解析,read() 操作返回的是str
  • rb:也即 binary mode,read()操作返回的是bytes
posted @ 2018-10-09 14:15  胡立峰  阅读(2794)  评论(0编辑  收藏  举报