gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 18:30:15 25 4
gpt4 key购买 nike

当读取和写入 pickle 文件时,我注意到一些片段使用 .p 其他的 .pkl 和一些完整的 .pickle .有没有一种最 pythonic 的方法可以做到这一点?

我目前的观点是,没有一个正确的答案,其中任何一个就足够了。事实上,在运行 pickle.load(open(filename, "rb"))。也就是说,文件扩展名只是一种约定,实际上并不影响底层数据。是吗?

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

最佳答案

扩展没有区别,因为“The Pickle Protocol”每次都会运行。

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

(pickle协议(protocol)是一种序列化格式)

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

因此,请使用您喜欢的扩展,因为pickler忽略它们。

JSON 是另一种更流行的数据序列化方式,与 pickle 不同,它也可以被其他语言使用——但是它不直接迎合 python 和某些变量它不理解类型:/

source如果你想阅读更多

编辑:虽然您可以使用任何名称,但您应该使用什么名称?

  • 1 如@Mike Williamson 所述,pickle 文档中使用了 pickle

  • 2 python 标准库json 模块 加载以.json 扩展名命名的文件。所以它将遵循 pickle 模块 加载 .pickle 扩展。

  • 3 使用 .pickle 还可以最大限度地减少被其他程序意外使用的可能性。

.p 扩展名被一些其他程序使用,最著名的是 MATLAB 作为二进制运行时文件的后缀[来源:one , two ]. 一些冲突的风险

.pkl 被一些不起眼的窗口“迁移向导装箱单文件”使用[source ]. 发生冲突的风险极低

.pickle 仅用于 python pickling[ source ]. 没有冲突的风险

关于python - 文件扩展名命名 : . p vs .pkl vs .pickle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42193963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com