pickle注意事项

最近开始学习python,一门优雅的语言,初学者在没有人教的情况下总是会在一些细节上栽跟头,而且通常都栽得很惨...我也是这样,所以想把一些我坑的地方记录下来,如果你也遇到了同样的问题,不妨和我讨论讨论,或者看看我的见解。本人初学,说的不一定对,仅供参考!!!

————————————写在前面


在学习对象持久化的时候学习了pickle和shelve,在练习的工程下创建了几个文件存储了几个表示个人信息的对象。对象的类是在当前工程下的一个自定义模块定义的,当时只是很简单的用from...import...导入后就用了。后来在另一个工程中需要pickle文件,记得之前做过就直接拷贝过来了。可是在读取的时候却出现错误。当时是做的WEB界面,代码比较杂,没找到到底错在哪里,还以为是cgi脚本的逻辑错了,找了半天,汗...

后来注释掉所有代码单独读取时才发现程序找不到类信息,错误信息是说找不到某某模块,也就是当初我定义类的模块。这时候才意识到pickle存储对象时,对于类它应该只是记住了类的原型在哪里,也就是记住了存储的时候是怎么找到那个类的,在以后打开的时候也用同样的方法去找。自然在当前的工程是找不到当初的模块的,所以理所当然的失败了...

知道原因就好办了,为了以后方便,我直接设置了PYTHONPATH环境变量,将自己写的比较公用的模块放了进去,然后重新使用shelve存储对象信息,这次我的自定义模块就可以通过python的搜索路径自动找到了,无论在那个工程里都可以使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值