Каков лучший модуль Zip Python для обработки больших файлов?

[Правовая оговорка: лично , я предпочитаю Vim. Правовая оговорка правовой оговорки: продолжать читать.]

Vim выделяется в маленьком: путем создания движения и действия разделяют понятия и предоставления услуг для сложных повторений, можно выполнить невероятно мощные операции редактирования в просто короткой последовательности нажатий клавиш. Можно легко сделать вещи в Vim в нормальном ходе редактирования, которое потребовало бы Вас к выпадающему к сценариям в Emacs. Кроме того, большая часть питания, которое Вы используете, выходит из поля, поэтому даже если Вы имеете обширный .vimrc удовлетворение требованиям заказчика, возможности - Вы, будет в состоянии работать продуктивно с любой установка Vim.

Emacs выделяется в большом: путем отображения всех его понятий UI непосредственно к основным конструкциям и понятиям в Elisp, становится очень легко глобально представить функции определенных видов файлов или обстоятельств, делая Emacs чем-то как основанное на тексте и намного больше structuredly программируемой формы Excel. Это предполагает, что Вы собираетесь провести много времени, настраивая Вашу среду для личных нужд и предпочтений. Конечно, Emacs действительно прилагает все усилия, чтобы облегчить оставаться в той одной среде для всего и чего-либо, что можно хотеть сделать.

В конечном счете, ни один не выше. Они предлагают различные стили, и в зависимости от Ваших склонностей, один или другой удовлетворит Вашим личным нуждам и образу мыслей лучше. Всегда полезно знать обоих (плюс больше редакторов), конечно. Но Вы aren’t, собирающийся быть заметно более продуктивным этот путь или это.

8
задан smci 30 September 2012 в 23:17
поделиться

2 ответа

Поэтому я сделал случайный большой zipfile:

$ ls -l *zip
-rw-r--r--  1 aleax  5000  115749854 Nov 18 19:16 large.zip
$ unzip -l large.zip | wc
   23396   93633 2254735

то есть 116 МБ с 23,4 КБ файлов в нем и временные данные:

$ time unzip -d /tmp large.zip >/dev/null

real    0m14.702s
user    0m2.586s
sys         0m5.408s

это предоставляемый системой двоичный файл распаковки из командной строки - без сомнения, столь же тонко настроенный и оптимизированный, как может быть чистый исполняемый файл C. Затем (после очистки /tmp;-)...:[1280 impression... и это Python со стандартной библиотекой - немного более требователен к процессору, но более чем на 10% быстрее в реальном времени, то есть прошедшее время .

Вы можете, конечно, повторить такие измерения (на вашей конкретной платформе - если у нее плохой процессор, например, медленный чип ARM, то дополнительные требования Python к процессору могут в конечном итоге сделать его медленнее - и ваш конкретные zip-файлы, представляющие интерес, поскольку каждый большой zip-файл будет иметь совершенно различное сочетание и, вполне возможно, производительность).

14
ответ дан 5 December 2019 в 08:52
поделиться

Для обработки больших файлов без загрузки их в память используйте новые методы на основе потоков в версии Python 2.6 zipfile , например ZipFile.open ]. Не используйте extract или extractall , если только вы не очистили имена файлов в ZIP-архиве.

(Раньше вам приходилось читать все байты в память, или обойти это как zipstream ;

5
ответ дан 5 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: