我不确定为什么这个Pickle示例没有显示两个字典定义.据我所知,"ab +"应该意味着pickle.dat文件被附加到并且可以从中读取.我是整个泡菜概念的新手,但网上的教程似乎不仅仅是初始存储.
import cPickle as pickle
def append_object(d, fname):
"""appends a pickle dump of d to fname"""
print "append_hash", d, fname
with open(fname, 'ab') as pickler:
pickle.dump(d, pickler)
db_file = 'pickle.dat'
cartoon = {}
cartoon['Mouse'] = 'Mickey'
append_object(cartoon, db_file)
cartoon = {}
cartoon['Bird'] = 'Tweety'
append_object(cartoon, db_file)
print 'loading from pickler'
with open(db_file, 'rb') as pickler:
cartoon = pickle.load(pickler)
print 'loaded', cartoon
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望使用for循环构建一个字典,然后将key:value对添加到pickle.dat文件,然后清除字典以节省一些RAM.
这里发生了什么?
不要使用泡菜.使用数据库.
Python dbm模块似乎完全符合您的要求.它为您提供类似字典的界面,但数据保存到磁盘.
用法示例:
>>> import dbm
>>> x = dbm.open('/tmp/foo.dat', 'c')
>>> x['Mouse'] = 'Mickey'
>>> x['Bird'] = 'Tweety'
Run Code Online (Sandbox Code Playgroud)
明天您可以加载数据:
>>> import dbm
>>> x = dbm.open('/tmp/foo.dat', 'c')
>>> print x['Mouse']
Mickey
>>> print x['Bird']
Tweety
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3484 次 |
| 最近记录: |