从zip文件到python中的文本的字节

时间:2016-06-08 13:27:42

标签: python file-io gzip

将gzip文件的内容提取到名为text的字符串后,它看起来像乱码。如何将其变成人类可读的东西?

with open("zipped_ex.gz.2016") as f:
    text = f.read()
    print text

注意:我不是在寻找从zipper_ex_gz.2016到内容的方法。相反,我正在寻找从bytestring到内容的方法。

1 个答案:

答案 0 :(得分:3)

import gzip
with gzip.GzipFile("zipped_ex.gz.2016") as f:
    text = f.read()
    print text

在磁盘上,文件是一个人为不可读的二进制blop 要处理存档中的数据,您需要提取一些数据。

在这种情况下,在内存中通过GzipFile模块解压缩存档"在运行中"因此,当您执行f.read()时,您将获得存档内容,而不是磁盘上存档的二进制内容。

可以在bytes字符串上使用相同的模块:

import io
import gzip

f = io.BytesIO(b"Your compressed gzip-file content here")
with gzip.GzipFile(fileobj=f) as fh:
    plain_text = fh.read()
    print(plain_text)

注意: gzip文件实际上是使用gzip格式压缩的单个数据单元。但是如果你想在gzip文件中使用tar文件,如果你有许多通过tar压缩的文本文件,请看看这个问题:How do I compress a folder with the Python GZip module?