Создание ZIP-архивов в Python: от целой директории до выборки файлов
Создание ZIP-архивов в Python: от целой директории до выборки файлов
Python упрощает создание ZIP и TAR архивов, будь то сжатие целой директории или выборка конкретных файлов.
Используйте shutil.make_archive для быстрого архивирования всей директории:
shutil.make_archive(output_filename, 'zip', dir_name)
Для детального управления класс zipfile.ZipFile позволяет указывать отдельные файлы:
ZipFile.write(filename)
Шаг 1: Подготовка окружения
- Импортируйте необходимые модули:
from shutil import make_archive from zipfile import ZipFile from os import path import os
- Убедитесь, что исходный файл существует и получите его абсолютный путь.
if path.exists("guru99.txt"): src = path.realpath("guru99.txt") - При необходимости переименуйте существующий файл под целевое имя.
Шаг 2: Архивирование всей директории
Когда нужно заархивировать всё в папке, используйте make_archive:
root_dir, _ = path.split(src)
make_archive("guru99_archive", "zip", root_dir)
Это создаст guru99_archive.zip в текущей рабочей директории.
Шаг 3: Добавление конкретных файлов в новый ZIP
Если нужен более точный контроль, класс ZipFile идеален:
with ZipFile("testguru99.zip", "w") as newzip:
newzip.write("guru99.txt")
newzip.write("guru99.txt.bak")
Оператор with автоматически закрывает архив при выходе из блока.
Шаг 4: Проверка результата
Откройте созданный ZIP-файл в проводнике ОС для просмотра содержимого. В Windows двойной клик покажет список включённых файлов.
Ниже иллюстративные скриншоты типичного рабочего процесса:







Полный код (Python 3):
import os
from shutil import make_archive
from zipfile import ZipFile
from os import path
def main():
if path.exists("guru99.txt"):
# Получить абсолютный путь к исходному файлу
src = path.realpath("guru99.txt")
# Опционально: переименовать существующий файл
os.rename("career.guru99.txt", "guru99.txt")
# Архивировать всю директорию, содержащую файл
root_dir, _ = path.split(src)
make_archive("guru99_archive", "zip", root_dir)
# Создать второй ZIP только с выбранными файлами
with ZipFile("testguru99.zip", "w") as newzip:
newzip.write("guru99.txt")
newzip.write("guru99.txt.bak")
if __name__ == "__main__":
main()
Резюме
- Для архивирования всей директории вызовите
shutil.make_archive('name', 'zip', root_dir). - Для добавления конкретных файлов используйте
ZipFile.write(filename)внутри блокаwith.
Python
- Работа с файлами в Python: открытие, чтение, запись и управление
- Чтение файлов в Java с BufferedReader — Практическое руководство с примерами
- Мастерство метода strip() в Python: подробное руководство и практические примеры
- Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
- Функция round() в Python: подробное объяснение с практическими примерами
- Освоение функции map() в Python: синтаксис, примеры и лучшие практики
- Python timeit(): измерение времени выполнения с практическими примерами
- Counter в collections Python: эффективное подсчёт, обновление и арифметические операции
- Python list.count(): экспертное руководство с практическими примерами
- Python list.index(): как находить позиции элементов — практические примеры