От автора: Python позволяет быстро создать архив zip / tar. Из этой статьи вы узнаете, как создать zip-архив файлов и каталогов в Python, а также найдете примеры и пошаговое объяснение кода.
Следующая команда создает zip-архив всего каталога.
shutil.make_archive(output_filename, 'zip', dir_name)
Следующая команда дает контроль над файлами, которые вы хотите заархивировать.
ZipFile.write(filename)
Вот последовательность создания Zip-файла в Python.
Шаг 1) Чтобы создать архивный файл, убедитесь, что вы правильно указали оператор импорта. Здесь оператор импорта для архива from shutil import make_archive
Объяснение кода:
Импортируем класс make_archive из модуля shutil
Используйте функцию split, чтобы разделить каталог и имя файла из пути к местоположению текстового файла (guru99)
Затем мы вызываем модуль «shutil.make_archive(» guru99 archive, «zip», root_dir)», чтобы создать архивный файл в формате zip
После этого мы передаем в корневой каталог элементы, которые хотим заархивировать. Все в каталоге будет заархивировано
Когда вы запустите код, вы увидите, что архивный zip-файл с правой стороны панели.
Шаг 2) Когда архивный файл создан, вы можете кликнуть правой кнопкой мыши на файле и выбрать ОС, это покажет содержащиеся файлы.
Теперь файл archive.zip появится в ОС (Windows Explorer).
Шаг 3) Когда вы дважды кликните на архиве, вы увидите список всех файлов в нем.
Шаг 4) В Python мы можем лучше контролировать архив, так как мы можем определить, какой конкретный файл включить в него. В нашем случае мы включим два файла «guru99.txt» и «guru99.txt.bak».
Объяснение кода:
Импортируем класс Zipfile из модуля Python. Этот модуль дает полный контроль над созданием ZIP-файлов
Мы создаем новый ZIP-файл с именем («testguru99.zip,» w «)
Для создания нового класса Zipfile, требуется передать доступы, потому что это файл, поэтому вам нужно записать информацию в файл как newzip
Мы использовали переменную «newzip» для ссылки на созданный нами zip-файл
Используя функцию записи для переменной «newzip», мы добавляем файлы «guru99.txt» и «guru99.txt.bak» в архив.
Когда вы выполните код, вы увидите, что файл создан в правой стороне панели с именем «guru99.zip».
Примечание. Здесь мы не выполняем команду «close» файл, например «newzip.close», потому что используем блокировку области действия «С», поэтому, когда программа выходит за пределы этой области, файл будет очищен и автоматически закрыт.
Шаг 5) Когда вы -> кликните правой кнопкой мыши на файле (testguru99.zip) и -> выберите свою ОС (Windows Explorer) , будут показаны архивные файлы в папке.
Если дважды кликнуть файл «testguru99.zip», откроется другое окно, в котором будут показаны файлы, включенные в него.
Вот полный код:
Пример Python 2
import os import shutil from zipfile import ZipFile from os import path from shutil import make_archive def main(): # Проверяем, существует ли файл if path.exists("guru99.txt"): # Получаем путь к файлу в текущем каталоге src = path.realpath("guru99.txt"); # Переименовываем оригинальный файл os.rename("career.guru99.txt","guru99.txt") # помещаем вещи в ZIP-архив root_dir,tail = path.split(src) shutil.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()
Пример Python 3
import os import shutil from zipfile import ZipFile from os import path from shutil import make_archive # Проверяем, существует ли файл if path.exists("guru99.txt"): # Получаем путь к файлу в текущем каталоге src = path.realpath("guru99.txt"); # Переименовываем оригинальный файл os.rename("career.guru99.txt","guru99.txt") # помещаем вещи в ZIP-архив root_dir,tail = path.split(src) shutil.make_archive("guru99 archive","zip",root_dir) # больше контроля над ZIP-файлом with ZipFile("testguru99.zip", "w") as newzip: newzip.write("guru99.txt") newzip.write("guru99.txt.bak")
Заключение
Чтобы заархивировать весь каталог, используйте команду «shutil.make_archive(«name»,»zip», root_dir)
Чтобы выбрать файлы для архива используйте команду «ZipFile.write(filename)»
Источник: https://www.guru99.com
Редакция: Команда webformyself.