提取多种类型的档案

时间:2013-04-16 05:24:14

标签: python

Python 中是否有任何模块,它可以让我提取各种档案?我需要提取 zip tar.bz2 tar.z rar 等。 现在,看起来我必须手动进行存档类型检测,并为每一个进行提取。

纯粹的 Python 将是首选。

4 个答案:

答案 0 :(得分:1)

结帐Patool。我无法证明它的工作情况有多好,但是有一些基于它的其他模块,虽然它确实依赖于某些格式的外部应用程序。

  

patool支持7z(.7z),ACE(.ace),ADF(.adf),ALZIP(.alz),APE(.ape),AR(.a),ARC(.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 :(得分:1)

在标准库中,您已经拥有模块zlibgzipbz2zipfiletarfile以使用压缩存档。

对于rar档案,rarfile module on pypi有一个与zipfile类似的接口,可以与python 2和3一起使用。

答案 2 :(得分:1)

从3.2看起来shutil似乎是adding more archiving functionality,但到目前为止只支持gziptar,bztar,tar和zip。

您可以使用shutil.register_archive_format()添加自己的处理程序 - 这样您就不必手动检测扩展程序了......但您仍需要自己定义提取。

答案 3 :(得分:0)

这个线程很旧,但是我又遇到了这个问题。 我已经尝试使用Patool选项或pyunpack(依赖于Patool),但强烈建议使用基于Patool的选项,并选择内置的shutdownil库,因为Patool似乎是unsupported for some time now。我自己是ran into a bug,因为库名已更改。

正如crennie回答的那样,我去了高级内置的shutillib,下面是我的代码,将7z和rar格式添加到shutil功能中,这是一个完整的初始问题。 请注意,这需要free()p7zip-full,可以使用p7zip-rar轻松设置它们:

pip install