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





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