文件扩展名命名:.p vs .pkl vs .pickle

时间:2017-02-12 22:18:01

标签: python naming-conventions pickle

在阅读和撰写pickle文件时,我注意到某些代码段使用.p个其他.pkl和一些.pickle。有一种最蟒蛇的方式吗?

我目前的观点是,没有一个正确的答案,任何这些都足够了。事实上,编写awesome.pklawesome.sauce的文件名在运行pickle.load(open(filename, "rb"))时会有所不同。也就是说,文件扩展名只是一个实际上不会影响底层数据的约定。是吗?

额外奖励:如果我将PNG图像保存为myimage.jpg怎么办?会造成什么破坏?

1 个答案:

答案 0 :(得分:8)

扩展程序会使没有差异,因为每次都会运行“ The Pickle Protocol ”。

也就是说,无论何时运行pickle.dumps或pickle.loads,对象都会根据pickle协议进行序列化/非序列化。

(泡菜协议是序列化格式

pickle协议特定于python (并且有多个版本)。它只是为用户自己重新使用数据而设计的 - >如果您将腌制文件发送给碰巧拥有不同版本 pickle / Python的其他人,那么该文件可能无法正确加载,您可能无法做任何有用的事情使用另一种语言(例如Java)的那个pickle文件。

因此,请使用您喜欢的扩展程序,因为 pickler 忽略

JSON 是另一种比较流行的数据序列化方式,它也可以被其他语言用于与pickle不同 - 但是它不能直接用于python等等某些变量类型不被它理解:/

source如果你想了解更多