все Python 3zipfileпонятие
zipfile.ZipFile
архивы ZIP
Класс для чтения, создания и дополнения ZIP-архивов; работает с путём или файловым объектом.
Синтаксис
zipfile.ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None)
По умолчанию compression=ZIP_STORED: файлы кладутся в архив вовсе без сжатия, и «архив» выходит размером с исходники — для сжатия нужен ZIP_DEFLATED. Режим 'w' молча затирает существующий архив, для дописывания нужен 'a', а повторное имя в архиве не заменяет старое, а добавляется вторым (с UserWarning). read() возвращает bytes, текст надо декодировать самому.
Примеры
import os, zipfile
with open('a.txt', 'w', encoding='utf-8') as f:
f.write('hello ' * 100)
with zipfile.ZipFile('stored.zip', 'w') as z:
z.write('a.txt')
with zipfile.ZipFile('packed.zip', 'w', compression=zipfile.ZIP_DEFLATED) as z:
z.write('a.txt')
print(os.path.getsize('stored.zip') > os.path.getsize('packed.zip')) # → True — по умолчанию сжатия нет
import zipfile
with zipfile.ZipFile('notes.zip', 'w', compression=zipfile.ZIP_DEFLATED) as z:
z.writestr('docs/readme.txt', 'привет')
with zipfile.ZipFile('notes.zip') as z:
print(z.namelist()) # → ['docs/readme.txt']
data = z.read('docs/readme.txt')
print(type(data).__name__) # → bytes
print(data.decode('utf-8')) # → привет
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности