开发者社区> 问答> 正文

python wb是什么

python wb是什么

展开
收起
云计算小粉 2018-05-10 20:11:06 4392 0
2 条回答
写回答
取消 提交回答
  • image.png

    wb以二进制写的模式创建。

    2019-11-22 15:04:26
    赞同 展开评论 打赏
  • 一、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='abcndef',我们可用len(x)得到它的长度为7,n我们称之为换行符,实际上是0x0A。当我们用'w'即文本方式写的时候,在windows平台上会自动将'0x0A'变成两个字符'0x0D','0x0A',即文件长度实际上变成8。当用'r'文本方式读取时,又自动的转换成原来的换行符。 如果换成'wb'二进制方式来写的话,则会保持一个字符不变,读取的时候也是原样读取。 所以如果用文本方式写入,用二进制方式读取的话,就要考虑这多出的一个字节了。'0x0D'也称回车符。 Linux下不会变,因为linux只使用'0X0A'来表示换行。

    2019-07-17 22:25:31
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载