打开文件时“rb”和“wb”是什么意思?

Python 3 中的二进制与默认模式的含义是什么?

当我尝试打开以另一种模式保存的泡菜文件时,出现错误,而在 Python 2.7 中,我可以在模式之间切换而没有任何问题。这个问题很容易解决,但为什么它首先重要?

一般来说:

  • 为了更大的便携性,应该首选哪种模式?是否存在首选模式的特定场景(例如处理纯文本文件等)?

  • 二进制/默认模式对 UTF-8 等编码有什么影响?


Helenr
浏览 402回答 1
1回答

白衣非少年

从文档:正如概述中提到的,Python 区分二进制和文本 I/O。以二进制模式打开的文件(包括'b'在mode参数中)将内容作为bytes对象返回,无需任何解码。在文本模式下(默认,或当't'包含在mode参数中时),文件的内容作为 返回str,字节已首先使用平台相关的编码或使用指定的编码(如果给定)进行解码。不出所料,您应该对文本数据使用(默认)文本模式,对二进制数据使用二进制模式——包括pickle明确定义为二进制的数据:该pickle模块实现了用于序列化和反序列化 Python 对象结构的二进制协议。“pickling”是将 Python 对象层次结构转换为字节流的过程,“unpickling”是相反的操作,即字节流(来自二进制文件或https://docs.python.org/3/glossary .html#term-bytes-like-object ) 被转换回对象层次结构。Python 3 处理文本和二进制数据之间的区别与 Python 2完全不同——实际上,这是主版本号更改的主要原因。因此,有时没有充分考虑区别的代码在 Python 2 中似乎“正常工作”(但随后经常会以意想不到的方式进一步咬你)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python