8.5.4 创建新归档
要创建一个新归档,需要用模式’w’实例化ZipFile。其会删除所有现有的文件,并创建一个新归档。要增加文件,可以使用write()方法。
from zipfile_infolist import print_info
import zipfile
print('creating archive')
with zipfile.ZipFile('write.zip',mode='w') as zf:
print('adding README.txt')
zf.write('README.txt')
print()
print_info('write.zip')
默认地,归档的内容不会被压缩。
运行结果:
要想增加压缩,需要有zlib模块。如果zlib可用,则可以使用zipfile.ZIP_DEFLATED设置单个文件的压缩模式,或者为归档整体设置压缩模式。默认的压缩模式是zipfile.ZIP_STORED,它会把输入数据增加到归档而不压缩。
from zipfile_infolist import print_info
import zipfile
try:
import zlib
compression = zipfile.ZIP_DEFLATED
except:
compression = zipfile.ZIP_STORED
modes = {
zipfile.ZIP_DEFLATED:'deflated',
zipfile.ZIP_STORED:'stored',
}
print('creating archive')
with zipfile.ZipFile('write_compression.zip',mode='w') as zf:
mode_name = modes[compression]
print('adding README.txt with compression mode',mode_name)
zf.write('README.txt',compress_type=compression)
print()
print_info('write_compression.zip')
这一次归档成员会被压缩。
运行结果: