![]() |
1
10
在写入和/或读取pickled数据时,可能没有以二进制模式打开文件。在这种情况下,将发生换行格式转换,这可能会破坏二进制数据。 要以二进制模式打开文件,必须提供“b”作为模式字符串的一部分:
|
![]() |
2
8
如上所述 Adam ,问题可能是pickle文件的换行格式。 不幸的是,真正的问题实际上是由 节约 而不是装载。如果您使用的是文本模式pickles,而不是二进制文件,那么这可能是可恢复的。尝试以通用换行模式打开文件,这将导致python猜测正确的行尾是什么,即:
但是,如果您使用的是二进制格式(cpickle.dump(file,1)),则可能存在无法恢复的损坏pickle(即使在Windows中加载时也是如此)-如果您很幸运并且没有显示\r\n字符,则它可能会工作,但一旦发生这种情况,您可能会以损坏的数据结束,因为无法区分“real”代码和一个窗口s已插入“仅查看”命令\n。 处理要在多个平台中加载的内容的最佳方法是始终以二进制模式保存。在Windows计算机上,保存pickle时使用:
|
![]() |
3
4
另一种获得此错误的方法是忘记在酸洗后关闭输出文件。这可能会留下一个不完整的文件,在随后的解压过程中以随机方式失败。 |
![]() |
4
2
应该是:
在你
如果不使用二进制模式,则Windows会将所有新行转换为\r\n并有效地损坏文件(至少在其他操作系统中如此)。 |
![]() |
5
0
使用dos2unix工具
|
![]() |
itMaxence · 从c库调用objective-c方法 7 年前 |
![]() |
seladb · Makefile-目录不存在时失败-跨平台 7 年前 |
![]() |
Ryan · 调整StackLayout元素的高度 7 年前 |
![]() |
Sergei G · C printf跨平台格式,无警告[重复] 7 年前 |