Python 3: Работа с zip архивами. Модуль ZipFile
Импорт модуля ZipFile:
import zipfile
Работа с zip архивами:
ZipFile(filename [, mode [, compression [, allowZip64]]])
filename - имя файла zip архива.
mode:
- r - файл будет открыт для чтения;
- w - если файл существует, то он будет уничтожен и вместо него будет создан новый файл;
- a - существующий файл будет открыт в режиме добавления в конец.
compression определяет метод сжатия, который должен использоваться при записи в архив. Он принимает одно из значений: ZIP_STORED или ZIP_DEFLATED. По умолчанию используется значение ZIP_STORED. Последний аргумент
allowZip64 позволяет разрешить использование расширений ZIP64, которые дают возможность создавать архивы размером больше 2 гигабайт. По умолчанию равен False.
Итак, давайте откроем наш ранее созданный архив для чтения:
Является ли файл zip архивом:
zipfile.is_zipfile('xml_healer.zip')
True
Чтение архива:
z = zipfile.ZipFile('xml_healer.zip', 'r')
Просмотр содержимого:
z.printdir()
Извлечение содержимого:
z.extract('file') # Извлечь файл из архива
z.extractall() # Извлечь все файлы
Запись содержимого:
with zipfile.ZipFile('spam.zip', 'w') as myzip:
myzip.write('file')
z = zipfile.ZipFile('spam.zip', 'w')
z.write('file')
z.close()
Для записи всех файлов в директории можно воспользоваться функцией os.walk:
import zipfile
import os
z = zipfile.ZipFile('spam.zip', 'w') # Создание нового архива
for root, dirs, files in os.walk('folder'): # Список всех файлов и папок в директории folder
for file in files:
z.write(os.path.join(root,file)) # Создание относительных путей и запись файлов в архив
z.close()
Закрытие архива:
z.close()