Более быстрая альтернатива 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% быстрее (или больше) было бы очень полезно).
Ответы
Ответ 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, вы можете экспериментировать с методами сжатия. На этой странице приводятся некоторые примеры того, как изменить параметры командной строки.