【转载】python基础-文件读写'r' 与 'rb' 和‘r+'与’rb+'区别

【转载链接:https://www.cnblogs.com/nulige/p/6128948.html】
 
一、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'会一直读取文件末尾。

posted @ 2018-11-27 18:13  Suomy  阅读(1244)  评论(0编辑  收藏  举报