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