我有一个tar归档文件,其中包含一些其他tar归档文件。下面的示例完美地提取了主.tar文件,但我在访问其中的其他.tar文件时遇到了问题。
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()这将返回以下内容:
file1.txt
file2.txt
<tarfile.ExFileObject object at 0x101989690>
tar1.tar这样我就可以访问tar1.tar文件对象了。然而,我不知道如何从tar1.tar获取成员或内容。
发布于 2016-05-20 01:54:16
将您的cfile作为fileobj参数传递给对tarfile.open()的新调用。
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')测试:
$ 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
chttps://stackoverflow.com/questions/37330238
复制相似问题