Python и стандартная библиотека zipfile

В своей работе часто сталкиваюсь с выгрузкой и обработкой большого объема данных, поэтому приходиться думать о том, где хранить и как быстро передать анализируемую информацию. Одну из таких задач уже описывал ранее в статье «Сложности при выгрузке 500 гб из базы данных и пример их решения». Но, если в ранее описанное решение добавить библиотеку архивации zipfile из Python и сжать данные, то их можно вместить в свободное место на жестком диске, исключая перенос на сетевой ресурс или ускорить перемещение за счет уменьшения объема файлов. Для работы с zipfile не требуется что-то дополнительно скачивать, достаточно только подключить.

Пример скрипта:

# Импортируем библиотеки import zipfile import os # Определяем путь к папке с файлами на жестком диске path_file = r'\Users\ *** \Файлы\ '[:-1] # Создаем массив имен из файлов csv list_file = [] for file in os.listdir(path_file): if file.endswith(('.csv')): list_file.append(file) list_file # Создаем ZIP файл и открываем для записи TempZipFile = zipfile.ZipFile(path_zip + 'NewFile.zip', 'w') # Сжимаем файлы используя метод сжатия ZIP_DEFLATED for name_file in list_file: TempZipFile.write(path_file + name_file, compress_type = zipfile.ZIP_DEFLATED) # Закрываем ZIP файл TempZipFile.close()

Например, 165 файлов в формате csv с общим объемом 224 ГБ удалось сжать в один zip-файл до 20 ГБ за два часа. Копирование на сетевой ресурс 20 ГБ данных независимо от формата zip или csv, при доступной мне скорости передачи, в среднем заняло 15 часов. В итоге, сэкономлено 200 ГБ памяти на жестком диске или 166 часов (с учетом затраченного времени на архивацию) при переносе на сетевой ресурс.

Более подробно о работе с стандартной библиотекой zipfile (чтение, извлечение, методы сжатия и др.) можно узнать на сайте docs.python.org по ссылке.

0
Комментарии
-3 комментариев
Раскрывать всегда