返回介绍

使用文本文件和二进制文件

发布于 2024-01-29 22:24:14 字数 1032 浏览 0 评论 0 收藏 0

本节进一步介绍Python 3.0的字符串模型对本书前面所介绍的文件处理基础知识的影响。正如前面提到的,关键是用哪种模式打开一个文件,它决定了在脚本中将要使用哪种对象类型表示文件的内容。文本模式意味着str对象,二进制模式意味着bytes对象:

·文本模式文件根据Unicode编码来解释文件内容,要么是平台的默认编码,要么是我们传递进的编码名。通过传递一个编码名来打开文件,我们可以强行进行Unicode文件的各种类型的转换。文本模型的文件也执行通用的行末转换:默认地,所有的行末形式映射为脚本中的一个单个的'\n'字符,而不管在什么平台上运行。正如前面所描述的,文本文件也负责阅读和写入在某些Unicode编码方案中存储文件开始处的字节顺序标记(Byte Order Mark,BOM)。

·二进制模式文件不会返回原始的文件内容,而是作为表示字节值的整数的一个序列,没有编码或解码,也没有行末转换。

open的第二个参数是想要处理文本文件还是二进制文件,就像在Python 2.X中所做的一样,给这个字符串添加一个"b"表示二进制模式(例如,"rb"表示读取二进制数据文件)。默认的模式是"rt",这等同于"r",意味着文本输入(就像在Python 2.X中一样)。

然而,在Python 3.0中,open的这种模式参数也意味着文件内容表示的一个对象类型,而不管底层的平台是什么——文本文件返回一个str供读取,并且期待一个str以写入;但二进制文件返回一个bytes供读取,并且期待一个bytes(或bytearray)供写入。

文本文件基础

为了便于展示,让我们从基本的文件I/O开始。只要你打算处理基本的文本文件(例如,ASCII)并且不担心绕过平台默认的字符串编码,Python 3.0中文件的显示和处理和它们在Python 2.X中有很大相似之处(由此可见,字符串是通用的)。例如,如下示例在Python 3.0中把一行文本写入一个文件并将其读取回来,和在Python 2.6中的处理是一样的(注意,Python 3.0中file不再是内置的名称,因此,这里使用它作为变量完全没有问题):

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文