07 Июл 2023
2 мин
1028

Создание zip-архива директории в Python

Часто в программировании возникает задача архивации директории. Например, может потребоваться заархивировать все файлы в папке для бэкапа или для

Содержание

Часто в программировании возникает задача архивации директории. Например, может потребоваться заархивировать все файлы в папке для бэкапа или для отправки по почте. В Python для решения таких задач существует встроенная библиотека zipfile.

Создание zip-архива с помощью модуля zipfile

Простым примером архивации директории является использование метода write() модуля zipfile. Вот пример кода, который создает zip-архив из всех файлов в директории:

import os
import zipfile

def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file))

if __name__ == '__main__':
    zipf = zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED)
    zipdir('tmp/', zipf)
    zipf.close()

В этом примере функция os.walk() используется для прохода по всем файлам в директории. Затем каждый файл добавляется в zip-архив с помощью метода write().

Создание zip-архива с использованием контекстного менеджера

Для автоматического закрытия файла после его использования можно использовать контекстный менеджер with. Вот пример кода, который делает то же самое, что и предыдущий, но с использованием контекстного менеджера:

import os
import zipfile

def zipdir(path, ziph):
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file))

if __name__ == '__main__':
    with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
        zipdir('tmp/', zipf)

В этом примере не нужно явно закрывать zip-файл с помощью метода close(), поскольку контекстный менеджер with автоматически закрывает его при выходе из блока кода.

В заключение, Python предлагает простые и эффективные инструменты для работы с zip-архивами, что позволяет легко решить задачу архивации директории.

Содержание

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

Определи профессию по рисунку