Организация файлов в файле tar bz2 с помощью python - PullRequest
3 голосов
/ 16 августа 2010

У меня около 200 000 текстовых файлов, которые помещены в файл bz2. У меня проблема в том, что когда я сканирую файл bz2 для извлечения необходимых мне данных, он идет очень медленно. Он должен просмотреть весь файл bz2, чтобы найти нужный файл. Есть ли способ ускорить это?

Кроме того, я подумал о возможной организации файлов в tar.bz2, чтобы я мог вместо этого знать, где искать. Есть ли способ организовать файлы, которые помещаются в bz2?

Подробнее / Редактировать: Мне нужно запросить сжатый файл для каждого текстового файла. Есть ли лучший метод сжатия, который поддерживает такое большое количество файлов и максимально сжат?

Ответы [ 2 ]

6 голосов
/ 16 августа 2010

Вы должны использовать bzip2?Читая это документация , совершенно ясно, что она не предназначена для поддержки произвольного доступа.Возможно, вам следует использовать формат сжатия, более точно соответствующий вашим требованиям.Старый добрый формат Zip поддерживает произвольный доступ, но, конечно, может сжимать хуже.

0 голосов
/ 16 августа 2010

Bzip2 сжимает в большие блоки (по-моему, 900 КиБ).Один метод, который значительно ускорит сканирование файла tar, , но , снизит производительность сжатия, - это сжатие каждого файла по отдельности, а затем сжатие результатов.По сути, это файлы Zip-формата (хотя они используют сжатие zlib, а не bzip2).Но вы могли бы легко получить индекс tar и распаковать только те файлы, которые вы ищете.

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

...