代码之家  ›  专栏  ›  技术社区  ›  user1554752

在python 3中使用io.bufferedreader快速读取gzip(文本文件)

  •  3
  • user1554752  · 技术社区  · 6 年前

    我正在尝试使用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 是二进制字符串。然而,我需要 线 为文本/ASCII字符串。是否有更有效的方法将文件作为文本字符串读取 BufferedReader 或者我必须解码 线 在for循环中?

    1 回复  |  直到 6 年前
        1
  •  0
  •   blhsing    6 年前

    你可以使用 io.TextIOWrapper 要将二进制流无缝包装到文本流,请执行以下操作:

    f = io.TextIOWrapper(gz)
    

    或者正如@shadowranger指出的那样,您只需以文本模式打开gzip文件,这样 gzip 模块将应用 IO.TEXTIO包装器 包装:

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