【发布时间】:2018-03-31 23:10:46
【问题描述】:
根据文档 (https://docs.python.org/3/library/io.html?highlight=io#io.RawIOBase.read),file.read(x) 应该从文件中返回最多 x 个字节。
但是,当我在 UTF-8 文本文件上调用 file.read(1) 时,它会返回 unicode 符号(包括那些占用 2-4 个字节的符号)。
然而,在 Python 2.7 中,一切似乎都正常。 所以问题是 - 这是一个错误,还是我在这里错过了什么?
【问题讨论】:
-
你是用二进制模式还是文本模式打开文件?
-
@Aran-Fey 在文本模式下。在二进制模式下,它可以正常工作。但是我想 read() 在两者上的操作都是一样的
-
不。在文本模式下你得到 1 个字符,在二进制模式下你得到 1 个字节。
-
@Aran-Fey,嗯,好的,然后我没有很好地搜索文档。谢谢
-
当你以文本模式打开时,你会得到一个文本阅读器:docs.python.org/3/library/io.html?highlight=io#io.TextIOBase
标签: python python-3.x file-io utf-8