Установить zip в python

Работа с zip-архивами в Python, модуль zipfile

Модуль zipfile (входит в стандартный набор python) позволяет работать с zip-архивами. Чтобы записать или прочитать содержимое zip-файла, прежде всего необходимо создать объект ZipFile . Объекты ZipFile похожи на объекты File , возвращаемые функцией open() .

ZipFile(filename [,mode[,compression[,allowZip64]]])
  • filename — имя файла zip архива.
  • mode
    • ‘r’ — файл будет открыт для чтения (это режим по умолчанию);
    • ‘w’ — файл будет открыт для записи; если файл не существует, он будет создан; если файл существует, он будет перезаписан;
    • ‘a’ — существующий файл будет открыт в режиме добавления файлов в архив.

    Создание архива, запись файлов и директорий:

    >>> import os, zipfile >>> os.chdir('C:\\example') >>> os.listdir() ['images', 'readme.txt'] >>> zipFile = zipfile.ZipFile('archive.zip', 'w', zipfile.ZIP_DEFLATED) >>> zipFile.write('readme.txt') [grn]# добавляем файл в архив[/grn] >>> zipFile.write('images') [grn]# добавляем (пустую) директорию в архив[/grn] >>> zipFile.write('images\\1.jpg') >>> zipFile.write('images\\2.jpg') >>> zipFile.close()

    Получение информации о содержимом zip-архива:

    >>> zipFile = zipfile.ZipFile('archive.zip', 'r') >>> zipFile.namelist() [grn]# получаем информацию о файлах и директориях[/grn] ['readme.txt', 'images/', 'images/1.jpg', 'images/2.jpg'] >>> zipInfo = zipFile.getinfo('readme.txt') [grn]# получаем информацию об отдельном файле[/grn] >>> zipInfo.file_size 13908 >>> zipInfo.compress_size 3828 >>> zipFile.close()

    Извлечение файлов из архива:

    >>> zipFile = zipfile.ZipFile('archive.zip', 'r') >>> zipFile.extract('readme.txt') [grn]# извлекаем отдельный файл из корня архива[/grn] 'C:\\example\\readme.txt' >>> zipFile.extract('images/1.jpg') [grn]# извлекаем отдельный файл из директории images[/grn] 'C:\\example\\images\\1.jpg' >>> zipFile.extractall() [grn]# извлекаем весь архив в текущую директорию[/grn] >>> zipFile.extractall('archive') [grn]# извлекаем весь архив в директорию archive[/grn] >>> zipFile.close()

    Функция zipfile.is_zipfile() проверяет, является ли файл архивом или нет. Если да, то она вернет True , если нет — False .

    # Копирует директорию со всем ее содержимым в # zip-файл с инкрементным номером в имени файла import zipfile, os def backupToZip(source, backup): """Создание резервной копии всего содержимого директории source""" # Проверить, что обе директории существуют if not (os.path.isabs(source) and os.path.isdir(source)): print('Директория %s не существует' % (source)) return if not (os.path.isabs(backup) and os.path.isdir(backup)): print('Директория %s не существует' % (backup)) return # Определить, какое имя файла будет у zip-архива, # исходя из имен уже существующих файлов number = 1 while True: name = os.path.basename(source) + '-' + str(number) + '.zip' backupFile = os.path.join(backup, name) if not os.path.isfile(backupFile): break number = number + 1 # Создание нового zip-файла print('Создание нового zip-файла %s. ' % (backupFile)) zipFile = zipfile.ZipFile(backupFile, 'w') # Обход всего дерева директории и сжатие файлов в каждой папке archDirName = '' for dir, subdirs, files in os.walk(source): print('Добавление файлов из директории %s. ' % (dir)) # Имя текущей директории в архиве archDirName = '/'.join([archDirName, os.path.basename(dir)]).strip('/') # Добавить в архив текущую директорию zipFile.write(dir, archDirName) # Добавить в архив все файлы из текущей директории for file in files: # Имя текущего файла в архиве archFileName = archDirName + '/' + file zipFile.write(os.path.join(dir, file), archFileName) zipFile.close() print('Готово') backupToZip('C:\\project', 'C:\\backup')

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

    • 1С:Предприятие (31)
    • API (29)
    • Bash (43)
    • CLI (100)
    • CMS (139)
    • CSS (50)
    • Frontend (75)
    • HTML (66)
    • JavaScript (150)
    • Laravel (72)
    • Linux (147)
    • MySQL (76)
    • PHP (125)
    • React.js (66)
    • SSH (27)
    • Ubuntu (68)
    • Web-разработка (509)
    • WordPress (73)
    • Yii2 (69)
    • БазаДанных (95)
    • Битрикс (66)
    • Блог (29)
    • Верстка (43)
    • ИнтернетМагаз… (84)
    • КаталогТоваров (87)
    • Класс (30)
    • Клиент (27)
    • Ключ (28)
    • Команда (69)
    • Компонент (60)
    • Конфигурация (62)
    • Корзина (32)
    • ЛокальнаяСеть (28)
    • Модуль (34)
    • Навигация (31)
    • Настройка (140)
    • ПанельУправле… (29)
    • Плагин (33)
    • Пользователь (26)
    • Практика (99)
    • Сервер (74)
    • Событие (27)
    • Теория (105)
    • Установка (66)
    • Файл (47)
    • Форма (58)
    • Фреймворк (192)
    • Функция (36)
    • ШаблонСайта (68)

    Источник

    Читайте также:  Интеграция с dadata php
Оцените статью