В Python существует несколько способов создания zip-архива с сохранением структуры папок. Один из наиболее распространенных способов - использование модуля zipfile . Давайте рассмотрим примеры.

Способов создания zip-архива с сохранением структуры папок в Python

В Python существует несколько способов создания zip-архива с сохранением структуры папок. Один из наиболее распространенных способов - использование модуля zipfile. Давайте рассмотрим примеры.

1. Использование модуля zipfile


import zipfile  # Импорт модуля для работы с zip-архивами
import os  # Импорт модуля для работы с операционной системой

def zip_directory(directory, zip_file):
    """
    Функция для создания zip-архива с сохранением структуры папок.

    Аргументы:
        directory (str): Путь к директории, которую нужно заархивировать.
        zip_file (str): Имя создаваемого архива.

    Возвращает:
        None
    """
    with zipfile.ZipFile(zip_file, 'w', zipfile.ZIP_DEFLATED) as zipf:  # Открытие zip-архива для записи
        for root, _, files in os.walk(directory):  # Итерация по всем файлам и подпапкам в указанной директории
            for file in files:  # Итерация по всем файлам в текущей папке
                file_path = os.path.join(root, file)  # Полный путь к текущему файлу
                relative_path = os.path.relpath(file_path, os.path.join(directory, '..'))  # Относительный путь файла относительно директории, которую мы архивируем
                zipf.write(file_path, relative_path)  # Добавление файла в архив с сохранением относительной структуры папок

# Пример использования:
directory_to_zip = 'путь_к_директории'  # Укажите путь к директории, которую вы хотите заархивировать
zip_file = 'название_архива.zip'  # Укажите имя для создаваемого архива
zip_directory(directory_to_zip, zip_file)  # Вызов функции для создания архива

Этот код создаст zip-архив, содержащий все файлы и подпапки указанной директории directory_to_zip, сохраняя при этом их структуру.

2. Использование библиотеки shutil

import shutil

def zip_directory_shutil(directory, zip_file):
    shutil.make_archive(zip_file, 'zip', directory)

# Пример использования:
directory_to_zip = 'путь_к_директории'  # Укажите путь к директории, которую вы хотите заархивировать
zip_file = 'название_архива.zip'  # Укажите имя для создаваемого архива (без расширения .zip)
zip_directory_shutil(directory_to_zip, zip_file)

Этот код также создаст zip-архив, содержащий все файлы и подпапки указанной директории directory_to_zip, сохраняя при этом их структуру.

Таким образом, вот в Python существует несколько способов создать zip-архивы папки с сохранением структуры директорий.