我有一个带有几个文件的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字符串。
最佳答案
如tarfile的documentation中所述,TarInfo
仅包含文件元数据-“它不包含文件数据本身。”
幸运的是,您可以将该TarInfo
对象传递回TarFile.extractfile(member)
以便以类似于文件的对象的形式获取文件的内容(随后可以通过.read()
来获取原始内容)。例如:print tar.extractfile(tarinfo).read()
。
另外,您也可以跳过foreach循环,直接使用文件名(例如TarFile.extractfile(member)
)调用print tar.extractfile("./ffb.json").read()
。
关于python - 如何将tar文件对象转换为字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43193281/