use*_*752 5 python gzip bufferedreader python-3.x
我正在尝试使用 gzip 模块有效地读入和解析压缩文本文件。此链接建议使用 包装 gzip 文件对象io.BufferedReader,如下所示:
import gzip, io
gz = gzip.open(in_path, 'rb')
f = io.BufferedReader(gz)
     for line in f.readlines():
         # do stuff
gz.close()
要在 Python 3 中执行此操作,我认为gzip必须使用mode='rb'. 所以结果是这line是一个二进制字符串。但是,我需要line是文本/ascii 字符串。是否有更有效的方法来使用 读取文件作为文本字符串BufferedReader,或者我必须line在 for 循环内进行解码?
您可以使用io.TextIOWrapper将二进制流无缝包装到文本流:
f = io.TextIOWrapper(gz)
或者正如 @ShadowRanger 指出的那样,您可以简单地以文本模式打开 gzip 文件,以便模块将为您gzip应用包装器:io.TextIOWrapper
for line in gzip.open(in_path, 'rt'):
    # do stuff