在Python 3使用的gzip io.BufferedReader(文本文件)的快速阅读

问题描述 投票:3回答:1

我想有效地读取的,并解析,使用模块的gzip压缩的文本文件。这link表明包裹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循环?

python python-3.x gzip bufferedreader
1个回答
0
投票

您可以使用io.TextIOWrapper无缝包裹二进制数据流的文本流,而不是:

f = io.TextIOWrapper(gz)

或者,正如@ShadowRanger指出的那样,你可以简单地以文本模式打开gzip文件代替,从而使gzip模块将应用io.TextIOWrapper包装为您提供:

for line in gzip.open(in_path, 'rt'):
    # do stuff
© www.soinside.com 2019 - 2024. All rights reserved.