无法在Mac上解压Windows上压缩的文件
我有一个简单的类,我把它保存到一个文件里。在OS X系统上,这一切都很顺利,在Windows系统上也是如此。
不过,在Windows上我可以正常加载和读取这个对象,但当我在Windows上把这个文件再次保存时,它在OS X上就无法读取了(虽然在Windows上依然可以正常使用)。
在OS X上我收到的错误提示是,它无法导入所需的类。
我很困惑,因为只要我不在Windows上进行保存,一切都能正常工作!(即使在Windows上保存也没问题)
我听说这可能与换行符有关,我还想过可能是因为不同操作系统使用的编码方式不同?但我真的不知道该怎么做才能彻底诊断或解决这个问题,所以任何帮助都非常感谢!
2 个回答
3
这段话主要讲的是在使用“pickle”这个工具时,文件的打开方式。简单来说,如果你用的是ASCII格式的“pickle”,那么打开文件时要用普通的文本模式,也就是'r'(读)或'w'(写)。如果你用的是二进制格式的“pickle”,那就要用二进制模式,分别是'rb'(读)和'wb'(写)。
文档里提到,默认的协议是0,这样可以确保向后兼容。也就是说,协议0是唯一一个可以在文本模式下写入文件并且成功读取的协议。如果你使用的是高于0的协议,记得在进行“pickle”和“unpickle”操作时,都要用二进制模式打开文件。
5
使用最新的协议版本来进行Pickle操作,并且在所有情况下都以二进制模式打开文件。这样应该能解决问题。