Декодирование файлового объекта, открытого в двоичном режиме - PullRequest
0 голосов
/ 27 декабря 2018

В python, если для файлового объекта, который был открыт в двоичном режиме, каков наилучший способ преобразования его в декодированный файловый объект UTF8 без загрузки всего содержимого в память?

1 Ответ

0 голосов
/ 27 декабря 2018

Вы можете получить StreamReader для конкретной кодировки и передать ему поток.Он вернет только полностью декодированные кодовые точки.

#coding:utf8
import codecs
import io

# A file-like binary stream.
data = io.BytesIO('我是美国人。\n你是中国人。\n'.encode('utf8'))

# Get the UTF-8 StreamReader class and instantiate it on the data.
f = codecs.getreader('utf8')(data)

print(f.read(2))
f.seek(0)
for line in f:
    print(line,end='')

Вывод:

我是
我是美国人。
你是中国人。
...