在某些情况下,当我加载一个现有的pickle文件,然后再次转储它时,大小几乎减半。
我想知道为什么,第一个嫌疑犯是协议版本。 我能找出文件是用哪种协议版本处理的吗?
也许有一种更优雅的方法,但要使用你可以使用的金属 pickletools :
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))