Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Архивирование — это элегантный способ сжатия нескольких файлов и объединения их в один. Это экономит не только место для хранения, но и пропускную способность при передаче файла по сети. Одной из лучших особенностей zip является то, что он работает на всех основных платформах: Windows, Linux и Mac.

Zip использует сжатие без потерь, поэтому он сохраняет все данные при сжатии и распаковке. Вы также можете зашифровать и расшифровать свои zip-файлы.

С таким количеством функций, которые нужно изучить, узнайте, как вы можете читать, архивировать и распаковывать файлы с помощью модуля Python zipfile.

Что такое модуль zipfile?

Вы можете использовать стандартный модуль zipfile для управления zip-файлами с помощью Python. С помощью этого модуля вы можете открывать и читать zip-файлы, читать их метаданные, создавать zip-файл, сжимать его и распаковывать файлы. Доступны три метода сжатия: Deflate, Bzip2 и LZMA.

instagram viewer

Одной из вещей, которой не хватает модулю, является возможность обработки многодисковых файлов, но он поддерживает расширение ZIP64. Он также может расшифровывать zip-архивы, но не шифровать их. Используя модуль zipfile, вы можете получить метаданные zip-файла, такие как дата и время модификации. Вы также можете получить такие сведения, как операционная система, использованная для создания файла, версия zip и размер файла как в сжатом, так и в несжатом формате.

Как архивировать файлы с помощью Python

Вы можете заархивировать несколько файлов в один архив, используя модуль Python zipfile. Импортировать Zip-файл модуль из zip-файл package для выполнения необходимых zip-операций. Также импортировать в Операционные системы модуль для выбора и сохранения файлов.

Определить функцию get_all_file_paths(). Он должен принимать параметр каталога, который содержит путь к папке, содержащей файлы для архивирования.

Инициализируйте пустой список, в котором будет храниться список путей к файлам. Используйте цикл for, чтобы получить полное содержимое целевого каталога, используя os.walk() функция. Эта функция выбирает имена файлов в дереве каталогов, перемещаясь по нему сверху вниз или снизу вверх. Для каждого каталога функция возвращает три кортежа, содержащие корень, каталоги и файлы.

Корень — это строка, содержащая полный путь к каталогу. Список каталогов включает все подкаталоги, содержащиеся в каталоге. Список файлов содержит все файлы, присутствующие в каталоге.

Внутри цикла объявите еще один цикл для перебора списка файлов. Использовать os.path.join() Функция для объединения имени каталога с каждым именем файла для создания полного пути. Затем добавьте это полное имя файла к списку, который вы создали ранее. После завершения этой операции верните список путей к файлам.

# импортируем необходимые модули
от zip-файл Импортировать Zip-файл
Импортировать Операционные системы

# создаем функцию для получения всех путей к файлам
дефget_all_file_paths(каталог):
# инициализируем пустой список для хранения путей к файлам
пути_файла = []

# перемещаемся по файлам
длякорень, каталоги, файлывОперационные системы.ходить(каталог):
для имени файла в файлах:
# соедините корень и имя файла, чтобы создать полный путь к файлу
путь к файлу = os.path.join (корень, имя файла)
пути к файлам.добавлять(Путь к файлу)

# возвращаем все пути к файлам
возвращаться пути к файлам

Сохраните путь к папке, содержащей файлы, которые вы хотите заархивировать, в переменной с именем directory. Вызовите функцию, get_all_file_paths() который вы создали ранее, и сохраните возвращаемое им значение в пути к файлам.

Отобразите сообщение для пользователя, чтобы сообщить ему, что это файлы, которые программа заархивирует. Переберите файлы и отобразите их имена.

Передайте имя, которое вы хотите, чтобы ваш zip-файл имел вместе со спецификацией, что программа возвращает файл с возможностью записи, используя оператор with для обработки исключений. Переберите каждый файл и используйте функцию write() над файлом, доступным для записи, в zip-файл.

По завершении операции выведите сообщение, поясняющее, что программа успешно заархивировала все файлы.

# путь к папке, которую вы хотите заархивировать
каталог = './pythonzip'

# вызов функции для получения всех путей к файлам в каталоге
file_paths = get_all_file_paths (каталог)

# печать списка всех файлов, которые вы хотите заархивировать
Распечатать('Список файлов, которые будут заархивированы:')

для file_name в file_paths:
Распечатать(имя файла)

# запись файлов в zip-архив
с Zip-файл('мой_файл.zip', 'ж') как почтовый индекс:
# записываем каждый файл по одному
для файла в file_paths:
молния.писать(файл)

Распечатать(«Все файлы заархивированы!»)

Как распаковать файлы с помощью Python

Реализация распаковки файлов с помощью модуля zipfile намного проще. Импортировать zip-файл пакет из Zip-файл модуль и сохраните имя zip-файла, который вы хотите извлечь, в переменной. Используйте оператор with для обработки исключений и открытия файла, который вы хотите извлечь, в режиме чтения. Использовать каталог печати() функция для отображения оглавления файлов, присутствующих в zip.

Отобразите сообщение о ходе выполнения извлечения файлов и используйте извлечь все() функция для извлечения содержимого zip-файла в текущий рабочий каталог. Кроме того, вы можете включить параметр пути, чтобы изменить путь, по которому программа извлекает файлы.

Отображение сообщения с помощью Распечатать заявление о завершении операции.

# импорт необходимых модулей
от zip-файл Импортировать Zip-файл

# передать имя zip-файла, который вы хотите извлечь
имя_файла = "извлечь.zip"

# открытие zip файла в режиме чтения
с ZipFile (имя_файла, 'р') как почтовый индекс:
# отображаем содержимое zip-файла
молния.printdir()

# извлечение всех файлов
Распечатать(«Выполняется извлечение...»)
молния.извлечь все()
Распечатать(«Все файлы извлечены!»)

Подробнее о zip-файлах

Zip-файлы приобрели большую популярность и используются уже несколько десятилетий. Популярные веб-сайты, такие как GitHub и Google Drive, позволяют загружать коллекцию файлов в виде zip-архива. Программа zip сжимает набор файлов в один пакет. Это отличается от такого инструмента, как tar, который упаковывает файлы вместе, но не сжимает их.

Если вы хотите зашифровать свои файлы с помощью более эффективного алгоритма, вам подойдут файлы RAR. RAR использует алгоритм AES-128, который лучше, чем алгоритм deflate, используемый zip-файлами. В конце концов, выберите тот, который лучше всего соответствует вашим потребностям.