Часто в программировании возникает задача архивации директории. Например, может потребоваться заархивировать все файлы в папке для бэкапа или для отправки по почте. В 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-архивами, что позволяет легко решить задачу архивации директории.
Добавить комментарий