Как создать zip-архив через python

Python: как добавить файлы в архив .zip

В python 3.5 есть очень полезный модуль — zipfile. С помощью него можно читать zip-архивы, а что самое главное — создавать новые. Мне для одной темы понадобилось создавать архивы массово, по 20 файлов в архиве. И для решения этой задачи я как раз и воспользовался библиотекой zipfile. В этой статье я покажу примеры использования zipfile в python.

Как установить модуль zipfile

У меня стоит версия питона 3.5 и модуль zipfile входит в его состав. Для его вызова достаточно написать привычное import zipfile. Если в вашей версии питона нет этой библиотеки, то ее можно установить через pip или easy install.

Как создать zip-архив

Импортируем модуль, создаем, закрываем файл. Код:

На экран естественно ничего не появится, тут нет print. Если хотите увидеть что все ок — добавьте print, а еще лучше — воспользуйтесь исключениями.

Результат — на диске С появился архив размером 22 байта.

Как добавить файлы в zip-архив через python

В коде выше я добавил два файла. Если нужно добавить много файлов с какой-то папки воспользуйтесь циклом. А для чтения с папок модуль os.

Как прочитать содержимое архива через питон

В общем, модуль zipfile решает много задач. Более подробнее о zipfile читайте на странице документации:
https://docs.python.org/3/library/zipfile.html.
Также советую заглянуть сюда — https://pymotw.com/3/zipfile/ , там есть примеры использования zipfile.

  • Могли бы вы мне помочь? Имеется кучка картинок формата png. Хочу их спрятать в архив и  в случае необходимости чтобы программа брала картинки из архива, причем планирую запароленый архив.
    Как именно обратиться к определенной картинке при этом?

    • Если правильно понял, прочесть/открыть файл, задав пароль.
      ZipFile.read("name_file.png", pwd="yourPassword")

  • А всё, можете не отвечать, я посёрфил по форумникам и нашёл, как это делается.

    • если не тяжело — какое решение использовали? :)

  • А как добавить целую директорию? Когда я указываю просто путь к папке, в которой фалы, оно копирует мне в архив только саму папку, но не файлы в ней.

    • я наверное начал бы с for file in os.listdir(path2dir)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *