代码之家  ›  专栏  ›  技术社区  ›  Jacques de Hooge

如何查找/打印生成pickle文件的协议版本

  •  2
  • Jacques de Hooge  · 技术社区  · 7 年前

    在某些情况下,当我加载一个现有的pickle文件,然后再次转储它时,大小几乎减半。

    我想知道为什么,第一个嫌疑犯是协议版本。 我能找出文件是用哪种协议版本处理的吗?

    1 回复  |  直到 7 年前
        1
  •  5
  •   user2722968    7 年前

    也许有一种更优雅的方法,但要使用你可以使用的金属 pickletools :

    import pickle
    import pickletools
    s = pickle.dumps('Test')
    proto_op = next(pickletools.genops(s))
    assert proto_op[0].name == 'PROTO'
    proto_ver = proto_op[1]
    

    proto_ver = max(op[0].proto for op in pickletools.genops(s))