返回介绍

类型和内容错误匹配

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

注意,当遇到文件的时候,我们不能违反Python的str/bytes类型差异并侥幸成功。正如如下的例子所示,如果试图向一个文本文件写入一个bytes或者向二进制文件写入一个str,将会得到错误(这里缩写了出错信息):

这是有意义的:对于二进制模式,在文本编码之前,它是没有意义的。尽管往往可能通过编码str和解码bytes在类型之间转换,但正如本章前面所介绍的那样,我们通常会坚持对文本数据使用str或对二进制数据使用bytes。由于str和bytes操作集有很大程度的重合,所以对于大多数程序来说,做出选择并不是那么难(参见本章最后一个部分针对这种情况的基础示例所介绍的字符串工具)。

除了类型限制,在Python 3.0中,文件内容也有关系。文本模式的输入文件需要一个str而不是一个bytes用于内容,因此,在Python 3.0中,没有方法把真正的二进制数据写入一个文本模式文件中。根据编码规则,默认字符集以外的bytes有时候可以嵌入一个常规的字符串中,并且它们总是可以在二进制模式中写入。然而,由于Python 3.0中的文本模式输入文件必须能够针对每个Unicode编码来解码内容,因此,没有办法在文本模式中读取真正的二进制数据:

最后一个错误源自于一个事实——Python 3.0中的所有文本文件实际都是Unicode文本文件,正如下一节所介绍的那样。

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

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

发布评论

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