所以我花了很长时间处理和写出我正在进行的项目的文件。这些文件包含用cPickle pickle的对象。现在我正在尝试加载腌制文件并且我遇到了问题:"无法导入模块......"。问题是,我可以直接从python提示符导入模块。
我开始注意到我的代码在读取文件时遇到问题(收到EOF错误),我注意到我正在阅读它('文件'' r')。其他人指出我需要指定它是一个二进制文件。我不再收到EOF错误,但现在我收到此错误。
在我看来,我最初通过写出' w'来搞砸我的文件。而不是' wb'。
我的问题是,有没有办法处理二进制文件并修复什么' w'改变了吗?可能通过搜索换行并更改它们(我认为这与Windows上的'和' wb'之间存在很大差异。)
任何帮助这样做都会很棒,否则我将失去数周的工作。感谢。
答案 0 :(得分:0)
我找到了答案here。它讨论了同一个问题的解决方案,但没有在概述python 2中的传统解决方案之前(对所有这样做的人,谢谢)。
解决方案归结为:
data = open(filename, "rb").read()
newdata = data.replace("\r\n", "\n")
if newdata != data:
f = open(filename, "wb")
f.write(newdata)
f.close()
基本上,只需替换" \ r \ n"的所有实例。与" \ n"。它似乎运作良好,我现在可以打开文件并将其解开它。