概述
喜欢哪里学哪里学习方式太随性,所以,知识只能一点一点积累了吧
下午的时候突然想试试序列化和持久化对象,序列化有什么趣啊一遍一遍一遍的问!想来是被之前的面试虐多了有自虐的倾向
所谓序列化嘛,就是为了保存内存中的数据结构的,还有别的意义么
随手搜了一下,各种版本的文章也是不少,最后还是实践了这篇 序列化Python对象 - 深入Python 3
序列化的过程分成两部分,第一部分是序列化+存储,第二部分是反序列化+恢复对象过程
存储对象过程
nyandeMacBook-Pro:~ nyan$ python
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct
5 2014, 20:42:22)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> entry = {}
>>> entry['title'] = 'local pickle'
>>> entry['id'] = b'xB6xADxC5xF4'
>>> entry['time_limit'] = None
>>> import pickle
<p class="p1"><span class="s1">>>> with open('entry.pickle', 'wb') as f:</span></p><p class="p1"><span class="s1">... <span> </span>pickle.dump(entry, f)</span></p><p class="p1"><span class="s1">...
>>></span></p>
至此,序列化过程结束,然后在终端当前的文件夹创建了entry.pickle文件
恢复对象过程
nyandeMacBook-Pro:~ nyan$ python
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct
5 2014, 20:42:22)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pickle
>>> with open('entry.pickle', 'rb') as f:
...
entry = pickle.load(f)
...
>>> entry
{'title': 'local pickle', 'id': b'xb6xadxc5xf4', 'time_limit': None}
既然文件已经存储过了,没必要像原文那样分成两个终端来测试
测试结果表明可以将序列化的对象恢复
</pre><pre name="code" class="python">Functions:
dump(object, file)
dumps(object) -> string
load(file) -> object
loads(string) -> object
dumps和loads方法可以轻松解决文件的问题,下面是测试
>>> str = pickle.dumps(entry)
>>> print(str)
b'x80x03}qx00(Xx02x00x00x00idqx01Cx04xb6xadxc5xf4qx02Xx05x00x00x00titleqx03Xx0cx00x00x00local pickleqx04Xnx00x00x00time_limitqx05Nu.'
>>> ent = pickle.loads(str)
>>> ent
{'id': b'xb6xadxc5xf4', 'title': 'local pickle', 'time_limit': None}
避开文件的持久化和恢复已经解决,然后就是跟redis的结合,继续之前的实验
>>> import redis
>>> r = redis.Redis('127.0.0.1', '6379', '0')
>>> r.set('entrystr', str )
True
>>> r.get('entrystr')
b'x80x03}qx00(Xx02x00x00x00idqx01Cx04xb6xadxc5xf4qx02Xx05x00x00x00titleqx03Xx0cx00x00x00local pickleqx04Xnx00x00x00time_limitqx05Nu.'
>>>
如此,python和redis的对象持久化过程完成
最后
以上就是务实小猫咪为你收集整理的python和redis实现对象持久化的全部内容,希望文章能够帮你解决python和redis实现对象持久化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复