繁体   English   中英

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

[英]Fast reading of gzip (text file) using io.BufferedReader in Python 3

我正在尝试使用gzip模块有效地读入和解析压缩文本文件。 链接建议使用io.BufferedReader包装gzip文件对象,如下所示:

import gzip, io
gz = gzip.open(in_path, 'rb')
f = io.BufferedReader(gz)
     for line in f.readlines():
         # do stuff
gz.close()

要在Python 3中执行此操作,我认为必须使用mode='rb'调用gzip 结果是该line是二进制字符串。 但是,我需要line作为text / ascii字符串。 有没有更有效的方法使用BufferedReader将文件作为文本字符串读取,或者我必须在for循环内解码line

您可以使用io.TextIOWrapper将二进制流无缝地包装到文本流中:

f = io.TextIOWrapper(gz)

或者正如@ShadowRanger指出的那样,您只需在文本模式下打开gzip文件,这样gzip模块就会为您应用io.TextIOWrapper包装:

for line in gzip.open(in_path, 'rt'):
    # do stuff

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM