Untar文件到内存数据结构

时间:2016-05-19 15:45:12

标签: python tar

我有.tar文件,其中包含其他tar文件和一些简单的文本文件。理想情况下,我想将整个tar文件(包括子.tar文件)读入内存数据结构中,以便进一步操作。我正在寻找最有效的方法来处理这个问题。以下提供了tar的第一级中的文件列表,但我需要检测子.tar文件然后解压缩它们。

tar = tarfile.open("test.tar")
#print tar.getmembers()
#filenames = tar.getnames()
for file in tar:
    print (file.name)

我尝试使用is_tarfile()方法进行检查,但这似乎需要一个文件名。

1 个答案:

答案 0 :(得分:0)

为了让您更进一步,这是一个递归例程,将tar解压缩到字符串中并尝试将字符串解压缩为tar:

import tarfile

def unpack(filename, fileobj=None):
    tar = tarfile.open(filename, fileobj=fileobj)
    for file in tar.getmembers():
        print (file.name)
        contentfobj = tar.extractfile(file)
        try:
            unpack(None, fileobj=contentfobj)
        except tarfile.ReadError:
            # print ("not a tar")
            print (contentfobj.read())


unpack("test.tar")

unpack首次获取文件名,然后fileobj为每个成员提供.extractfile()。最后一个打印显示了如果文件不是tar,你如何获取文件的内容。