13. 数据压缩和归档

13.1. zlib

zlib压缩使用gzip工具解压缩的。

13.2. gzip

gzip提供简单的即可去压缩和解压缩。

样例

# 读取压缩文件
import gzip
with gzip.open("/home/joe/file.txt.gz", "rb") as f:
    file_content = f.read()

# 创建压缩文件
import gzip
content = b"Lots of content here"
with gzip.open("/home/joe/file.txt.gz", "wb") as f:
    f.write(content)

# 压缩一个存储的文件
import gzip
import shutil
with open("/home/joe/file.txt", "rb") as f_in:
    with gzip.open("/home/joe/file.txt.gz", "wb") as f_out:
        shutil.copyfileobj(f_in, f_out)

# 压缩二进制字符串
import gzip
s_in = b"Lots of content here"
s_out = gzip.compress(s_in)

13.3. bz2

bz2提供简单的即可去压缩和解压缩。

用法和gzip基本一样。

13.4. lzma

lzma提供简单的即可去压缩和解压缩。(xz)

使用方法和gzip基本一样。

13.5. zipfile

zipfile提供zip归档

样例:

# 创建zip
with ZipFile("spam.zip", "w") as myzip:
    myzip.write("eggs.txt")

# 查看zip中的特定文件
with ZipFile("spam.zip") as myzip:
    with myzip.open("eggs.txt") as myfile:
        print(myfile.read())

13.6. tarfile

tarfile提供打包归档

使用方法和zipfile基本一样。只是打开模式上,有写不同。

模式

描述

r|*

打开压缩流通用压缩

r|

打开压缩

r|gz

打开gzip流读取

r|bz2

打开bz2流读取

r|xz

打开xz流读取

w|

通用压缩写入

w|gz

打开gzip流写入

w|bz2

打开bz2流写入

w|xz

打开xz流写入