Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python提取BZ2压缩文件夹_Python_Compression - Fatal编程技术网

使用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模块将处理其余部分。