我想有效地读取的,并解析,使用模块的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循环?
您可以使用io.TextIOWrapper
无缝包裹二进制数据流的文本流,而不是:
f = io.TextIOWrapper(gz)
或者,正如@ShadowRanger指出的那样,你可以简单地以文本模式打开gzip文件代替,从而使gzip
模块将应用io.TextIOWrapper
包装为您提供:
for line in gzip.open(in_path, 'rt'):
# do stuff