Python zipfile — это встроенный модуль, который помогает нам архивировать файлы. Заархивировать файл означает, что мы можем уменьшить размер файла. Размер будет уменьшен после сжатия файла.
ZIP — это формат файла архива, который поддерживает сжатие данных без потерь. Сжатие данных без потерь — это тип алгоритма сжатия, который позволяет полностью восстановить исходные данные из сжатых данных.
Как заархивировать несколько файлов в Python
Чтобы сжать несколько файлов в Python, используйте метод zipfile.ZipFile(). Переберите все файлы, которые необходимо заархивировать, и используйте метод write() для записи окончательного заархивированного файла. Давайте разберем этот пример шаг за шагом.

Шаг 1: Определите три zip-файла
Чтобы заархивировать несколько файлов, мы сначала должны определить три файла. Допустим, у нас есть следующие три файла в каталоге нашего проекта.
- purchase.csv
- sales.csv
- marketing.csv
Шаг 2: Импортируйте модуль zipfile и создайте список
Чтобы импортировать любой модуль в Python, используйте оператор import.
|
1 2 3 |
# app.py import zipfile |
Следующим шагом является создание списка и добавление этих трех CSV-файлов в качестве элементов списка.
|
1 |
list_files = ['sales.csv', 'purchase.csv', 'marketing.csv'] |
Шаг 3: Откройте файл с помощью With
Оператор With в Python используется для открытия файлов. Было бы полезно, если бы вы использовали оператор with, потому что он гарантирует, что дескрипторы открытых файлов автоматически закрываются после завершения выполнения программы.
|
1 2 3 |
with zipfile.ZipFile('final.zip', 'w') as zipF: for file in list_files: zipF.write(file, compress_type=zipfile.ZIP_DEFLATED) |
В этом коде мы использовали оператор with, чтобы открыть файл final.zip в режиме записи. На следующем шаге мы использовали цикл for для перебора файлов и записи одного за другим файла в режиме zip. Означает заархивирование одного за другим файла, и конечным результатом будет окончательный файл .zip.
См. следующий полный код.
|
1 2 3 4 5 6 7 8 9 10 11 |
# app.py import zipfile list_files = ['sales.csv', 'purchase.csv', 'marketing.csv'] with zipfile.ZipFile('final.zip', 'w') as zipF: for file in list_files: zipF.write(file, compress_type=zipfile.ZIP_DEFLATED) print('The three files has been compressed') |
Запустите файл.
|
1 2 |
python3 app.py The three files has been compressed |
Теперь проверьте каталог вашего проекта, и вы увидите, что создан один файл с именем final.zip. Это zip-файл, состоящий из трех CSV-файлов.
