【问题标题】:Python 3 - "file.read(x)" reads x chars, not bytesPython 3 - “file.read(x)” 读取 x 字符,而不是字节
【发布时间】: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


【解决方案1】:

这应该可以工作

with open("myfile", "rb") as f:
    byte = f.read(1)
    while byte != b"":
        byte = f.read(1)

【讨论】:

    猜你喜欢
    • 2020-11-03
    • 2010-10-22
    • 2018-03-14
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多