繁体   English   中英

在Windows上cPickle和open('w')

[英]cPickle and open('w') on Windows

因此,我花了很长时间处理和写出我正在研究的项目的文件。 这些文件包含用cPickle腌制的对象。 现在,我正在尝试加载已腌制的文件,并且遇到了问题:“无法导入模块...”。 事实是,我可以直接从python提示符下导入模块。

我开始注意到我的代码在读取文件时遇到了问题(出现EOF错误),并且我注意到我正在使用open('file','r')进行读取。 其他人指出,我需要指定它是一个二进制文件。 我再也没有收到EOF错误,但是现在我收到了此错误。

在我看来,起初我用'w'而不是'wb'来写文件,从而使文件写起来更加麻烦。

我的问题是,有没有一种方法可以处理二进制文件并修复“ w”的更改? 可能通过搜索换行符并进行更改(我认为这是Windows上“ w”和“ wb”之间的最大区别)。

这样做的任何帮助都将是惊人的,否则我将失去数周的工作。 谢谢。

我在这里找到了答案。 它讨论的是针对相同问题的解决方案,但没有概述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”即可。 看来效果不错,我现在可以打开文件并将其解开。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM