如何将tar文件对象转换为字符串
问题描述:
我有一个tarfile对象,里面有几个文件,其中一个叫做ffb.json
。我尝试以下,以提取JSON字符串,如何将tar文件对象转换为字符串
with tarfile.open(mode="r:gz", fileobj=StringIO.StringIO(p.results)) as tar:
for tarinfo in tar:
print tarinfo.name
if tarinfo.name == './ffb.json':
print tarinfo.tobuf()
然而,print tarinfo.tobuf()
不打印我所期待的:./ffb.json0000644000000000000000000000054313070524150012600 0ustar rootroot00000000000000
如果我提取用手ffb.json,它确实有合法的JSON字符串在里面。
答
正如documentation的tar文件指出,TarInfo
只包含文件元数据 - “它确实不包含文件的数据本身。”
幸运的是,您可以将该对象TarInfo
传回TarFile.extractfile(member)
,以便将文件内容作为类文件对象(随后可以通过.read()
获取原始内容)获取。例如:print tar.extractfile(tarinfo).read()
。
或者,你可以跳过foreach循环,直接调用TarFile.extractfile(member)
与文件名(例如print tar.extractfile("./ffb.json").read()
)。