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

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

最佳答案

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/

相关文章:

php - 为什么当我查找某些列而不是其他列时,php 返回 json?

java - 这是没有 get/set 的 Retrofit POJO 的正确方法吗?

javascript - 仅绘制 JSON 输出的一部分的图形

python - 在 python 中将 CSV 转换为 JSON 文件

python - 通过应用加速 Pandas DataFrame Group

python - 有没有办法在 numpy 上查看某些函数的源代码?

python - Pandas 滴答数据按小时平均并绘制历史的每一周

linux - 从 Linux 中的 tgz 中提取未压缩的文件

ubuntu - 如何在 ubuntu 灯中压缩文件夹

linux - 从 tar 文件中提取特定目录而不创建包含层次结构