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.txt
和 3.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/
表示要解压到的目录地址。