Подтвердить что ты не робот

Более быстрая альтернатива Zipfile-модулю Python?

Есть ли более быстрая альтернатива Zipfile-модулю Python 2.7.4 (с ZIP_DEFLATED) для zipping большого количества файлов в один ZIP файл? Я посмотрел на czipfile https://pypi.python.org/pypi/czipfile/1.0.0, но, похоже, он сфокусирован на более быстрой дешифровке (не сжимает).

Мне обычно приходится обрабатывать большое количество файлов изображений (~ 12 000 файлов из файлов .exr и .tiff) с каждым файлом размером от ~ 1 МБ до 6 МБ (и ~ 9 ГБ для всех файлов) в один ZIP файл для отправки. Эта задержка занимает ~ 90 минут для обработки (работает на Windows 7 64 бит).

Если кто-то может порекомендовать другой модуль python (или, альтернативно, библиотеку C/С++ или даже автономный инструмент), который мог бы сжать большое количество файлов в один .zip файл за меньшее время, чем модуль zipfile, это было бы очень полезно (что-то близкое к ~ 5-10% быстрее (или больше) было бы очень полезно).

4b9b3361

Ответ 1

Как говорит Паташу, аутсорсинг на 7-zip может быть лучшей идеей.

Вот пример кода для начала работы:

import os
import subprocess

path_7zip = r"C:\Program Files\7-Zip\7z.exe"
path_working = r"C:\temp"
outfile_name = "compressed.zip"
os.chdir(path_working)

ret = subprocess.check_output([path_7zip, "a", "-tzip", outfile_name, "*.txt", "*.py", "-pSECRET"])

Как упоминалось в Martineau, вы можете экспериментировать с методами сжатия. На этой странице приводятся некоторые примеры того, как изменить параметры командной строки.