首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问.tar文件中的.tar文件

访问.tar文件中的.tar文件
EN

Stack Overflow用户
提问于 2016-05-20 01:29:50
回答 1查看 93关注 0票数 1

我有一个tar归档文件,其中包含一些其他tar归档文件。下面的示例完美地提取了主.tar文件,但我在访问其中的其他.tar文件时遇到了问题。

代码语言:javascript
复制
import tarfile
import os

fd = tarfile.open('test.tar')
for member in fd.getmembers():
    if not member.isfile():
        continue

    cfile = fd.extractfile(member)
    name = cfile.name
    filename, file_extension = os.path.splitext(name)
    #print filename + "----" + file_extension

    if file_extension == ".tar":
        print cfile
    #print cfile.read()
    print cfile.name
    cfile.close()
fd.close()

这将返回以下内容:

代码语言:javascript
复制
file1.txt
file2.txt
<tarfile.ExFileObject object at 0x101989690>
tar1.tar

这样我就可以访问tar1.tar文件对象了。然而,我不知道如何从tar1.tar获取成员或内容。

EN

回答 1

Stack Overflow用户

发布于 2016-05-20 01:54:16

将您的cfile作为fileobj参数传递给对tarfile.open()的新调用。

代码语言:javascript
复制
import tarfile
import os

def list_contents(name, fileobj=None, prefix=''):
    fd = tarfile.open(name, fileobj=fileobj)
    for member in fd.getmembers():
        if not member.isfile():
            continue
        cfile = fd.extractfile(member)
        name = cfile.name
        filename, file_extension = os.path.splitext(name)
        print prefix + cfile.name
        if file_extension == '.tar':
            list_contents(name, cfile, prefix+'    ')
        cfile.close()
    fd.close

list_contents('x.tar')

测试:

代码语言:javascript
复制
$ touch a b c x y z
$ tar cf y.tar x y z
$ tar cf x.tar a b y.tar c
$ python t.py
a
b
y.tar
    x
    y
    z
c
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37330238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档