小白的Python之路 day5 shelve模块讲解
shelve模块讲解
一、概述
之前我们说不管是json也好,还是pickle也好,在python3中只能dump一次和load一次,有什么方法可以向dump多少次就dump多少次,并且load不会出错,也不会出问题,现在开始介绍shelve模块,这个shelve模块是一个简单的key,value将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
简单来说,使用者可以将一个列表、字典、或者用户自定义的类实例保存到shelve中,下次需要用的时候直接取出来,就是一个Python内存对象,不需要像传统数据库一样,先取出数据,然后用这些数据重新构造一遍所需要的对象。
可以看出shelve模块和json对文件的操作是很像的,但是保存文件时有三个文件,如图:
具体不用管这三个文件的格式,正常的读写就行了。
模块名称 | 描述 | 提供的api |
---|---|---|
json | 用于实现Python数据类型与通用(json)字符串之间的转换 | dumps()、dump()、loads()、load() |
pickle | 用于实现Python数据类型与Python特定二进制格式之间的转换 | dumps()、dump()、loads()、load() |
shelve | 专门用于将Python数据类型的持久化到磁盘,shelf是一个类似dict的对象,操作十分便捷 | open() |
json,pickle用法点击这里http://www.cnblogs.com/ManyQian/p/8186045.html
二、常用方法
1 import shelve 2 3 db = shelve.open('shelve_test') 4 # key与value必须是字符串 5 db['int'] = 1 6 db['float'] = 2.3 7 db['string'] = "I like python." 8 db['key'] = 'value' 9 db.close() #存入数据 10 11 #这个可以另外写一个.py文件去读取 12 db = shelve.open('shelve_test') 13 print(db.get('int)') 14 print(db.get('float')) 15 print(db.get('string')) 16 print(db.get('key')) 17 db.close() #读取数据 18 19 输出: 20 1 21 2.3 22 I like python. 23 value