zzxworld

Python 使用 zip 模块函数操作压缩文件

Python 使用 zip 模块函数操作压缩文件

ZIP 是一个比较常见和通用的文件压缩格式,Python 标准库中的 zipfile 模块提供了对此类文件的读写功能支持。今天来探究一下在 Python 中如何通过此模块来读写 ZIP 压缩文件。

创建 ZIP 压缩文件

zipfile 是标准库模块,使用前需要先导入:

import zipfile

然后使用如下的代码创建 zip 文件,并加入要压缩的文件:

with zipfile.ZipFile('test.zip', 'w') as zip:
    zip.write('1.txt')
    zip.write('2.txt')
    zip.write('3.txt')

通过上面的代码,就简单的把 1.txt, 2.txt3.txt 这个三个文件以归档方式创建成了 test.zip 文件。不过没有使用任何文件压缩效果。如果需要以压缩方式创建 zip 文件,第一行代码需要提供压缩选项:

with zipfile.ZipFile('test.zip', 'w', zipfile.ZIP_DEFLATED, compresslevel=5) as zip:

zipfile.ZIP_DEFLATED 是压缩算法,compresslevel 是压缩比,取值为 0-9。数值越大压缩比越高,但也越耗时。

查看 ZIP 压缩文件

获取压缩文件中的文件名:

with zipfile.ZipFile('test.zip') as zip:
    print(zip.namelist())

获取压缩文件中的文件信息:

with zipfile.ZipFile('test.zip') as zip:
    print(zip.infolist())

解压 ZIP 压缩文件

按文件名遍历挨个解压:

with zipfile.ZipFile('test.zip') as zip:
    for name in zip.namelist():
        zip.extract(name)

直接全部解压:

with zipfile.ZipFile('test.zip') as zip:
      zip.extractall()

使用模块命令

zipfile 模块提供了几个简单的命令接口,可以在不用写代码的情况下直接操作 ZIP 压缩文件。比如要创建一个新的 zip 压缩文件:

python -m zipfile -c test.zip 1.txt 2.txt 3.txt

紧挨着 -c 的是要创建的 zip 文件名。跟在后面的就是要压缩的文件。这里除了文件,也支持指定要压缩的目录。

除了创建压缩文件,还可以列出 zip 压缩文件中包含的文件信息:

python -m zipfile -l test.zip

另外还有解压压缩文件的命令:

python -m zipfile -e test.zip to-path/

后面的 to-path/ 表示要解压到的目录地址。