gpt4 book ai didi

python - 访问 .tar 文件中的 .tar 文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:28 25 4
gpt4 key购买 nike

我有一个 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 获取成员或内容。

最佳答案

将您的 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
c

关于python - 访问 .tar 文件中的 .tar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37330238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com