我创建了一个小的Python脚本,将pickle文件保存在Linux上,然后在Windows上使用它,然后再次在Linux上使用它,但现在该文件在Linux上无法工作,但在Windows上完美运行。
是这样的,Python是跨平台的,但pickle文件不是。
有没有解决方法?
Python的pickle是完美跨平台的。
这可能是由于Windows和Linux之间的EOL(行结束符)差异造成的。确保在写入和读取pickle文件时都使用二进制模式打开它们,分别使用open()的“wb”和“rb”模式。
注意:在不同版本的Python之间传递pickles可能会引起问题,因此请尽量在两个平台上使用相同的版本。
pickle
模块支持几种不同的数据格式。如果您指定了特定的 pickle 格式而不是使用默认值(0),则可能会遇到跨平台二进制文件问题。您可以通过指定协议 0 来使用纯 ASCII pickle 文件。
Pickle应该是跨平台的,但存在版本/协议问题(请参见http://docs.python.org/library/pickle.html#data-stream-format),但通常情况下,如果您在Windows和Unix上使用相同版本的Python,则它们应该是可互操作的。
如果您将Pickle用作数据传输机制,则可能需要考虑数据存储的实现不太特定的格式,例如json、xml、csv、yaml等。
json
替代 pickle
。如果它能保存你的数据,那么你就知道它是跨平台的。