小白的Python之路 day5 shelve模块讲解

时间:2022-05-31 03:38:20

shelve模块讲解

一、概述

    之前我们说不管是json也好,还是pickle也好,在python3中只能dump一次和load一次,有什么方法可以向dump多少次就dump多少次,并且load不会出错,也不会出问题,现在开始介绍shelve模块,这个shelve模块是一个简单的key,value将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式

简单来说,使用者可以将一个列表、字典、或者用户自定义的类实例保存到shelve中,下次需要用的时候直接取出来,就是一个Python内存对象,不需要像传统数据库一样,先取出数据,然后用这些数据重新构造一遍所需要的对象。

 可以看出shelve模块和json对文件的操作是很像的,但是保存文件时有三个文件,如图:小白的Python之路 day5 shelve模块讲解

具体不用管这三个文件的格式,正常的读写就行了。


模块名称 描述 提供的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