shelve-对象持久存储
1.概念:
- shelve模块使用一种类字典的API,可以持久存储可pickle的任意python对象。当不需要关系数据库的时候,shelve模块可以用作Python对象的的一个简单的持久存储选择,类似与字典,shelf要按键来访问,值将被pickle并写至anydbm创建和管理的数据库。
- 什么是shelf? 类似与python内置类型字典(This is initialized with a dictionary-like object.),当创建了数据之后,如果再次访问数据,可以打开shelf,像字典一样使用。
2.小例子加深理解
-
默认情况下,shelf不会跟踪可变对象的修改。
1 >>> import shelve 2 3 >>> s = shelve.open('test.dat') 4 >>> s['x'] = ['a', 'b', 'c'] 5 >>> s['x'].append('d') 6 >>> s['x'] 7 ['a', 'b', 'c']
存储的d到哪里去了呢?其实很简单,d没有写回,你把['a', 'b', 'c']存到了x,当你再次读取s['x']的时候,s['x']只是一个拷贝,而你没有将拷贝写回,所以当你再次读取s['x']的时候,它又从源中读取了一个拷贝,所以,你新修改的内容并不会出现在拷贝中,解决的办法就是,第一个是利用一个缓存的变量,如下所示
*******************************
工具至上
Email:zsc1528@gmail.com
QQ:2743230905
*******************************
posted on 2013-05-14 11:41 micky.zhou 阅读(323) 评论(0) 编辑 收藏 举报