返回介绍

使用 Unicode 文件

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

到目前为止,我们已经读取和写入了基本的文本文件和二进制文件,但是,如何处理Unicode文件呢?事实证明,读取和写入存储在文件中的Unicode文本很容易,因为Python 3.0的open调用针对文本文件接受一个编码,在数据传输的时候,它自动为我们编码和解码。这允许我们处理用不同编码创建的Unicode文本,而不仅是平台默认编码的Unicode文本,并且以不同的编码存储以供转换。

在Python 3.0中读取和写入Unicode

实际上,我们有两种办法可以把字符串转换为不同的编码:用方法调用手动地转换和在文件输入输出上自动地转换。在本节中,我们将使用如下的Unicode字符串来说明这一点:

手动编码

我们已经介绍过,总是可以根据目标编码名称把一个字符串转换为raw bytes:

文件输出编码

现在,要把我们的字符串以特定编码写入一个文本文件,我们可以直接把想要的编码名称传递给open,尽管我们可以先手动地编码并以二进制格式写入,但没有必要这么做:

文件输入编码

类似地,要读取任意的Unicode数据,我们直接把文件的编码类型名称传入open,并且,它自动根据raw bytes解码出字符串;我们也可以手动地读取raw byte并解码,但是,当读取数据块的时候(我们可能读取不完整的字符),这可能有些繁琐,并且也没有必要这么做:

解码错误匹配

最后,别忘了,Python 3.0中的这些文件行为仅限于可以作为文本载入的内容。正如前面的部分所介绍的,Python 3.0真的必须能够把文本文件中的数据解码为一个str字符串,根据默认的或传入的Unicode编码名称。例如,试图以文本模式打开一个真正的二进制数据文件,即便使用了正确的对象类型,也不可能在Python 3.0中有效。

这些例子中的第一个可能不会在Python 2.X中失效(常规文件不能解码文本),即便它可能应该失效:读取一个文件可能会以字符串返回毁坏的数据,由于在文本模式中的自动行末转换(读取的时候,任何嵌入的\r\n字节都将在Windows下转换为\n)。在Python 2.6中,要把文件内容当做Unicode文本对待,我们需要使用特殊的工具而不是通用的内置函数open,稍后我们将介绍这些。那么,首先,让我们来看一个更重要的话题。

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

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

发布评论

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