我正在尝试在特定位置提取bz2
压缩文件夹。
我可以通过以下方式查看数据:
handler = bz2.BZ2File(path, 'r')
print handler.read()
但我希望将此压缩文件夹中的所有文件解压缩到维护文件夹内部目录结构的位置(由用户指定)。
我对这种语言还不熟悉..请帮忙......
答案 0 :(得分:4)
与gzip一样,BZ2只是单个文件的压缩器,它不能归档目录结构。我怀疑你拥有的是一个由tar
之类的软件首先创建的存档,然后使用BZ2
进行压缩。为了恢复“完整目录结构”,首先提取您的Bz2文件,然后取消tar(或等效)文件。
幸运的是,Python tarfile模块支持bz2选项,因此您可以一次完成此过程。
答案 1 :(得分:1)
bzip2是一个压缩整个文件的数据压缩系统。它不像PKZip那样捆绑文件并压缩它们。因此,示例中的handler
只有一个且只有一个文件,并且没有“内部目录结构”。
另一方面,如果您的文件实际上是一个压缩的tar文件,那么您应该查看将为您处理解压缩的Python的tarfile module。
答案 2 :(得分:1)
您需要使用tarfile模块来解压缩.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()