Найти в Дзене
Властелин машин

Сжатие и разбиение файлов с Python

Оглавление

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

Для последующих манипуляций будем использовать модуль zipfile.

Создание архива

Для этого потребуется создать экземпляр класса ZipFile и вызвать его метод write с указанием пути к файлу, который помещается в архив. Напишем простой блок кода, который архивирует заданную папку:

Получение информации об архиве

Опять же сначала потребуется создать экземпляр класса ZipFile. Список названий входящих в архив файлов можно получить, обратившись к методу namelist, а размеры файлов и их сжатых копий из свойств объекта информации о содержимом (file_size, compress_size), получаемого через метод getinfo. Продемонстрируем вывод информации о содержимом архива на примере:

-2

Извлечение файлов из архива

Для этого создается экземпляр класса ZipFile и вызывается его метод extract или extractall для извлечения конкретного или всех файлов. При этом в обоих можно указать путь к папке, иначе копирование происходит в рабочий каталог. Вот как полностью извлечь архив в заданную папку:

-3

Разбиение

Дальнейшие операции происходят с использованием модуля filesplit. Для работы потребуется создать экземпляр класса Filesplit.

Затем разбиение производится методом split с указанием файла, размера части в байтах, выходной директории (если не указана, то текущая) и, возможно, callback функции, вызываемой после формирования каждой части:

-4

Объединение

Данная операция выполняется методом merge объекта класса Filesplit:

-5

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

-6