解码以二进制模式打开的类似File的对象

时间:2018-12-27 07:54:08

标签: python utf-8 stream decode

在python中,给定以二进制模式打开的类似文件的对象,将其转换为UTF8解码的类似文件的对象而不将所有内容加载到内存的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以获得特定编码的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='')

输出:

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