Python 中是否有任何模块,它可以让我提取各种档案?我需要提取 zip , tar.bz2 , tar.z , rar 等。 现在,看起来我必须手动进行存档类型检测,并为每一个进行提取。
纯粹的 Python 将是首选。
答案 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)
在标准库中,您已经拥有模块zlib
,gzip
,bz2
,zipfile
和tarfile
以使用压缩存档。
对于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