P
Python для начинающих
@pythonvideo1.2K подп.
99просмотров
8.0%от подписчиков
25 марта 2026 г.
Score: 109
Как использовать модуль zipfile для создания и извлечения архивов Когда файлов становится много, а отправить нужно «всё и сразу», на сцену выходит модуль zipfile. Он входит в стандартную библиотеку Python, так что ничего устанавливать не нужно. --- ### Создаем ZIP‑архив из одного файла Минимальный пример: import zipfile with zipfile.ZipFile("data.zip", mode="w", compression=zipfile.ZIP_DEFLATED) as zf: zf.write("report.txt", arcname="report_in_zip.txt") Что здесь происходит: - mode="w" — создаем новый архив (старый будет перезаписан). - compression=ZIP_DEFLATED — обычное сжатие ZIP. - write("report.txt", arcname=...) — первое имя — исходный файл, второе — как он будет называться внутри архива. --- ### Добавляем несколько файлов и папку Чтобы пройтись по директории и заархивировать всё, что внутри: import zipfile import os def zip_folder(folder_path, zip_name): with zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED) as zf: for root, dirs, files in os.walk(folder_path): for file_name in files: full_path = os.path.join(root, file_name) rel_path = os.path.relpath(full_path, folder_path) zf.write(full_path, arcname=rel_path) zip_folder("project", "project_backup.zip") Ключевой момент — rel_path. Благодаря относительному пути структура папок в архиве сохраняется аккуратно, без длинных системных путей. --- ### Извлекаем архив целиком или выборочно Извлечь всё содержимое очень просто: import zipfile with zipfile.ZipFile("project_backup.zip", "r") as zf: zf.extractall("restored_project") А вот выборочное извлечение: import zipfile with zipfile.ZipFile("project_backup.zip", "r") as zf: for name in zf.namelist(): if name.endswith(".py"): zf.extract(name, "only_scripts") namelist() возвращает список файлов внутри архива. Можно фильтровать по расширению, имени и т.д. --- ### Проверяем содержимое без распаковки Иногда нужно просто «подглядеть» внутрь ZIP: import zipfile with zipfile.ZipFile("project_backup.zip", "r") as zf: for info in zf.infolist(): print(info.filename, info.file_size, "bytes") Так можно быстро оценить структуру и размер архива. --- zipfile полезен для бэкапов, упаковки логов, раздачи учебных проектов и автоматизации рутины. Освоив эти несколько приёмов, вы легко встроите архивирование прямо в свои скрипты.
99
просмотров
2405
символов
Нет
эмодзи
Нет
медиа

Другие посты @pythonvideo

Все посты канала →
Как использовать модуль zipfile для создания и извлечения ар — @pythonvideo | PostSniper