使用Python提取BZ2压缩文件夹
我试图在特定位置提取一个使用Python提取BZ2压缩文件夹,python,compression,Python,Compression,我试图在特定位置提取一个bz2压缩文件夹。 我可以通过以下方式查看其中的数据: handler = bz2.BZ2File(path, 'r') print handler.read() 但我希望将此压缩文件夹中的所有文件解压缩到一个位置(由用户指定),以维护文件夹的内部目录结构 我对这门语言相当陌生。。请帮忙 是一种数据压缩系统,它压缩一个完整的文件。它不会像以前那样捆绑和压缩文件。因此,在您的示例中,handler中只有一个文件,并且没有“内部目录结构” 另一方面,如果您的文件实际上是一个
bz2
压缩文件夹。
我可以通过以下方式查看其中的数据:
handler = bz2.BZ2File(path, 'r')
print handler.read()
但我希望将此压缩文件夹中的所有文件解压缩到一个位置(由用户指定),以维护文件夹的内部目录结构
我对这门语言相当陌生。。请帮忙 是一种数据压缩系统,它压缩一个完整的文件。它不会像以前那样捆绑和压缩文件。因此,在您的示例中,handler
中只有一个文件,并且没有“内部目录结构”
另一方面,如果您的文件实际上是一个压缩的tar文件,那么您应该查看Python的版本,它将为您处理解压缩。与gzip一样,BZ2只是单个文件的压缩器,它不能存档目录结构。我怀疑您拥有的是一个归档文件,它首先是由
tar
之类的软件创建的,然后用BZ2
进行压缩。为了恢复“完整目录结构”,首先提取Bz2文件,然后取消tar(或等效文件)
幸运的是,Python模块支持bz2选项,因此您可以一次性完成此过程。您需要使用该模块解压缩.tar.bz2
文件。。。从文档中可以看出,您可以这样做:
import tarfile
tar = tarfile.open(path, "r:bz2")
for tarinfo in tar:
print tarinfo.name, "is", tarinfo.size, "bytes in size and is",
if tarinfo.isreg():
print "a regular file."
# read the file
f = tar.extractfile(tarinfo)
print f.read()
elif tarinfo.isdir():
print "a directory."
else:
print "something else."
tar.close()
我该怎么做?正在提取的BZ2文件部分??是否有一个函数可以直接获取未压缩文件,或者我需要先读取bz2文件,然后将数据写入其他文件?打开tar.bz文件,就像打开普通tar文件一样。pythontarfile模块将处理其余部分。