3

我正在尝试bz2在特定位置提取压缩文件夹。我可以通过以下方式查看内部数据:

handler = bz2.BZ2File(path, 'r')
print handler.read()

但我希望将这个压缩文件夹中的所有文件提取到一个位置(由用户指定),维护文件夹的内部目录结构。

我对这种语言相当陌生..请帮助...

4

3 回答 3

5

与 gzip 一样,BZ2 只是单个文件的压缩器,它不能归档目录结构。我怀疑你有一个档案,它首先由软件创建tar,然后用BZ2. 为了恢复“完整目录结构”,首先解压缩 Bz2 文件,然后解压缩(或等效)文件。

幸运的是,Python tarfile模块支持 bz2 选项,因此您可以一次性完成此过程。

于 2013-05-23T13:58:33.263 回答
2

bzip2是一种数据压缩系统,可以压缩一个完整的文件。它不像PKZip那样捆绑文件和压缩它们。因此handler,在您的示例中只有一个文件,并且没有“内部目录结构”。

另一方面,如果您的文件实际上是一个压缩的 tar 文件,您应该查看Python的tarfile 模块,它将为您处理解压缩。

于 2013-05-23T13:52:54.320 回答
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()
于 2013-05-23T14:17:09.717 回答