如何将tar文件对象转换为字符串

时间:2017-04-03 20:01:13

标签: python json tar

我有一个tarfile对象,里面有几个文件,其中一个名为ffb.json。我尝试了以下提取json字符串,

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字符串。

1 个答案:

答案 0 :(得分:2)

如tarfile的documentation所述,TarInfo仅包含文件元数据 - "它包含文件的数据本身。 #34;

幸运的是,您可以将TarInfo个对象传回TarFile.extractfile(member),以便将文件的内容作为类似文件的对象(您可以随后.read()到得到原始内容)。例如:print tar.extractfile(tarinfo).read()

或者,您可以跳过foreach循环并直接使用文件名调用TarFile.extractfile(member)(例如print tar.extractfile("./ffb.json").read())。