2013-04-16 3 views
2

Есть ли какой-либо модуль в Python, который позволяет мне извлекать различные архивы? Мне нужно извлечь почтовый, tar.bz2, tar.Z, RAR и другие. Прямо сейчас, похоже, что я должен делать обнаружение типа архива вручную, а также записывать извлечение для каждого из них.Извлечение архивов нескольких типов

Pure Python будет предпочтительнее.

+0

Я знаю, что rar, zip и tar имеют интерфейсы Pythonic, которые работают как модуль tarfile. Другие, я не уверен. – Blender

+0

Нет, нет. Вы можете сделать zip с помощью 'import zipfile' и tar, используя' import tarfile', но 'rar' не существует, а другие будут отрывочными. – Serdalis

ответ

1

Отъезд Patool. Я не могу подтвердить, насколько хорошо он работает, но есть несколько других модулей, основанных на нем, хотя он зависит от внешних приложений для некоторых форматов.

patool поддерживает 7z (.7z), ACE (.ace), АПД (.adf), ALZip (.alz), APE (.ape), АР (.a), АРК (.arc), ARJ (.arj), BZIP2 (.bz2), CAB (.cab), COMPRESS (.Z), CPIO (.cpio), DEB (.deb), DMS (.dms), FLAC (.flac), GZIP (.gz), LRZIP (.lrz), LZH (.lha, .lzh), LZIP (.lz), LZMA (.lzma), LZOP (.lzo), RPM (.rpm), RAR (.rar), RZIP (.rz), SHN (.shn), TAR (.tar), XZ (.xz), ZIP (.zip, .jar) и ZOO (.zoo). Он использует вспомогательные приложения для обработки этих форматов архива (например, bzip2 для архивов BZIP2).

1

В стандартной библиотеке, у вас уже есть модули zlib, gzip, bz2, zipfile и tarfile работать со сжатыми архивами.

Для RAR архивов, есть rarfile module on pypi, который имеет аналогичный интерфейс для ZipFile и работает с Python 2 и 3.

1

С 3.2 это выглядит как shutil это adding more archiving functionality, но до сих пор только gziptar, bztar, деготь и zip поддерживаются.

Вы можете добавить свои собственные обработчики с помощью shutil.register_archive_format() - таким образом вам не нужно было бы устанавливать расширение вручную ... но вам все равно нужно будет определить извлечение самостоятельно.

Смежные вопросы