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