码迷,mamicode.com
首页 > 其他好文 > 详细

shelve

时间:2018-11-15 21:05:59      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:span   数据   持久化   shelve   int   简单   字典   删除   nbsp   

shelve提供python的持久化操作什么叫持久化操作呢说白话,就是把数据写到硬盘上.
在操作shelve的时候非常的像操作一个字典这个东?到后期就像redis差不多.
字典怎么用shelve就怎么用
import shelve
shelf = shelve.open("sylar")  #打开一个文件"sylar"如果没有会自动生成
shelf["jay"] = "周杰伦"
print(shelf[‘jay‘])   #结果:周杰伦
shelf.close()
感觉到了么这个鬼东?和字典差不多只不过你的字典是一个文件接下来我们存储 一些复的数据
import shelve
s = shelve.open("sylar")
s["jay"] = {"name":"周杰伦", "age":18, "hobby":"哄?小孩"}
print(s[‘jay‘]) #{‘name‘: ‘周杰伦‘, ‘age‘: 18, ‘hobby‘: ‘哄?小孩‘}
s.close()
但是,有坑
import shelve
s = shelve.open("sylar")
s[‘jay‘][‘name‘] = "胡辣汤" #尝试改变字典中的数据
s.close()
s = shelve.open("sylar")
print(s[‘jay‘]) # 并没有改变
s.close()
解决方案
import shelve
s = shelve.open("sylar", writeback=True)
s[‘jay‘][‘name‘] = "胡辣汤" # 尝试改变字典中的数据
s.close()
s = shelve.open("sylar")
print(s[‘jay‘]) # 改变了.{‘name‘: ‘胡辣汤‘, ‘age‘: 18, ‘hobby‘: ‘哄?孩‘}
s.close()
writeback=True可以动态的把我们修改的信息写入到文件中而且这个?东?西还可以删除数据就像字典?样上?波操作
s = shelve.open("sylar", writeback=True)
del s[‘jay‘]
s.close()
 
 
s = shelve.open("sylar")
print(s[‘jay‘]) # 报错了,没有了
s.close()
 
 
s = shelve.open("sylar", writeback=True)
s[‘jay‘] = "周杰伦"
s[‘wlj‘] = "王?宏"
s.close()
#
#
s = shelve.open("sylar")
for k in s: # 像字典?样遍历
    print(k)
print(s.keys()) # 拿到所有key的集合
for k in s.keys():
    print(k)
for k, v in s.items(): # 像字典?一样操作
    print(k, v)
s.close()
综上shelve就当成字典来用就?了它比redis还简单.......

shelve

标签:span   数据   持久化   shelve   int   简单   字典   删除   nbsp   

原文地址:https://www.cnblogs.com/BALCKLIGHTNING/p/9965853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!