Skip to main content

Операции с zip-файлом

Zip File Operations in Python

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

Как Архивировать Файл в Python

Модуль zipfile в Python предоставляет функциональные возможности для создания, чтения, записи, добавления и извлечения ZIP-файлов.

Архивирование Одного Файла

Вы можете использовать модуль zipfile для создания zip файла, содержащего один файл. Вот как это можно сделать:

import zipfile

# name of the new Zip file
zip_file_name = 'new_zip_file.zip'

# name of the source file
file_name = 'file_to_compress.txt'

# Create a ZipFile Object
zip_object = zipfile.ZipFile(zip_file_name, 'w')

# Add the source file to the zip file
zip_object.write(file_name, compress_type=zipfile.ZIP_DEFLATED)

# Close the Zip File
zip_object.close()

В приведенном выше коде мы сначала импортировали модуль zipfile. Затем мы определили имя zip-файла и имя исходного файла. Мы создали объект ZipFile и добавили в него исходный файл, используя метод write(). Затем мы закрыли zip-файл, используя метод close().

Создание Zip-Архива с Несколькими Файлами

Вы также можете создать zip-файл, содержащий несколько файлов. Вот пример:

import zipfile

# name of the new Zip file
zip_file_name = 'new_zip_file.zip'

# names of the source files
file_names = ['file_to_compressed1.txt',
              'file_to_compressed2.txt',
              'file_to_compressed3.txt'
             ]

# Create a ZipFile Object
zip_object = zipfile.ZipFile(zip_file_name, 'w')

# Add multiple files to the zip file
for file_name in file_names:
    zip_object.write(file_name, compress_type=zipfile.ZIP_DEFLATED)

# Close the Zip File
zip_object.close()

В приведенном выше примере мы определили имена нескольких исходных файлов в списке. Затем мы добавили каждый из этих файлов в zip-файл, используя цикл for и метод write(). Наконец, мы закрыли zip-файл, используя метод close().

Чтобы ещё сильнее сжать zip-файл, можно установить аргумент compress_type в значение zipfile.ZIP_DEFLATED. Это применяет метод сжатия DEFLATE к добавляемым файлам.

Распаковать Файл в Python

Используя модуль zipfile, распаковать zip-файлы в Python очень просто. Вот два способа сделать это:

import zipfile

with zipfile.ZipFile('myzipfile.zip', 'r') as zip_ref:
    zip_ref.extractall('destination_folder')

В этом примере мы сначала импортируем модуль zipfile. Затем мы создаем экземпляр класса ZipFile для zip-файла, который хотим извлечь. Аргумент r указывает на то, что мы хотим прочитать из zip-файла, а myzipfile.zip - это имя файла, который мы хотим извлечь.

Метод extractall() извлекает все файлы из zip-файла и сохраняет их в указанную destination_folder. Если destination_folder не существует, она будет создана.

import zipfile

with zipfile.ZipFile('myzipfile.zip', 'r') as zip_ref:
    for file in zip_ref.namelist():
        if file.endswith('.txt'):
            zip_ref.extract(file, 'destination_folder')

В этом примере мы снова импортируем модуль zipfile и создаем экземпляр класса ZipFile. Затем мы перебираем все файлы в zip-архиве, используя namelist(). Если файл имеет расширение .txt, мы извлекаем его в destination_folder.

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

Пишите вместе с нами!

Вы можете внести свой вклад в статьи о Python на GitHub: создайте Fork, внесите правки и отправьте нам Pull request.

Profile picture for user AliaksandrSumich
Python engineer, expert in third-party web services integration.
Обновлено: 05/03/2024 - 21:52
Profile picture for user angarsky
Evgeniy Melnikovрецензент
Проверено и опубликовано