我了解到,在python3中,一个pickle文件(Link)有5种不同的协议。我想知道如何从pickle文件中获取元数据信息(特别是协议)。
发布于 2020-06-05 00:04:51
基于pickle source in Python 3.8和一些实验,通过查看前2个字节可以很容易地获得版本号2和更高版本。第一个文档记录为:
PROTO = b'\x80' # identify pickle protocol在上面的文件中,可以使用以下命令进行测试:
' '.join(f'{c:02x}' for c in pickle.dumps(42, protocol=2))这给了我:
80 02 4b 2a 2e
即一个字节(0x80),它表明我们即将获得一个版本号,然后是版本号2。如果我们用更新的版本号运行它,它会相应地更改,即版本5给出:
80 05 4b 2a 2e
这看起来很简单。较低的版本号似乎不会报告任何事情,但也许其他人会提出一些建议!
https://stackoverflow.com/questions/62198217
复制相似问题