python的shelve模块

shelve

shelve是一额简单的数据存储方案,他只有一个函数就是open(),这个函数接收一个参数就是文件名,并且文件名必须是.bat类型的。然后返回一个shelf对象,你可以用他来存储东西,就可以简单的把他当作一个字典,当你存储完毕的时候,就调用close函数来关闭

这个有一个潜在的小问题,如下:

import shelve

list = [1, 2, 3]

she = shelve.open(‘test.dat‘)
she[‘d‘] = list
she[‘d‘].append(‘f‘)print(she[‘d‘])

你会发现,打印后,没有‘f’ ,存储的f到哪里去了呢?其实很简单,d没有写回,你把[1,2,3]存到了d,当你再次读取she[‘d‘]的时候,she[‘d‘]只是一个拷贝,而你没有将拷贝写回,所以当你再次读取she[‘d‘]的时候,它又从源中读取了一个拷贝,所以,你新修改的内容并不会出现在拷贝中,解决的办法就是,第一个是利用一个缓存的变量,如下所示

import shelve

list = [1, 2, 3]

she = shelve.open(‘test.dat‘)
she[‘d‘] = list
temp = she[‘d‘]
temp.append(‘f‘)
she[‘d‘] = temp
print(she[‘d‘])

这样返回的结果就有‘f’了。

不过在shelve模块中,key必须为字符串,而值可以是python所支持的数据类型。

时间: 2024-12-14 18:47:52

python的shelve模块的相关文章

python之shelve模块

1.shevle简介 利用 shelve 模块, 你可以将 Python 程序中的变量保存到二进制的 shelf 文件中.这样, 程序就可以从硬盘中恢复变量的数据. shelve 模块让你在程序中添加"保存"和"打开" 功能.例如, 如果运行一个程序,并输入了一些配置设置,就可以将这些设置保存到一个 shelf 文件,然后让程序下一次运行时加载它们. 2.方法 2.1.写入数据 import shelve import datetime d = shelve.ope

python之shelve模块详解2(转)

阅读目录 一.定义 二.用途 三.用法 四.关联模块Anydbm 五.方法 六.writeback参数 回到顶部 一.定义 Shelve是对象持久化保存方法,将对象保存到文件里面,缺省(即默认)的数据存储文件是二进制的. 回到顶部 二.用途 可以作为一个简单的数据存储方案. 回到顶部 三.用法 使用时,只需要使用open函数获取一个shelf对象,然后对数据进行增删改查操作,在完成工作.并且将内存存储到磁盘中,最后调用close函数变回将数据写入文件. 回到顶部 四.关联模块Anydbm 相同点

Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块

5.sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 5.1 使用sys.argv进行登录判断,跳过 i/o阻塞 #使用sys.argv进行登录判断,跳过 i/o阻塞 import s

python shelve模块

import shelve import datetime d = shelve.open('shelve_test') '''写入文件''' info = {'age': 22, 'job': 'IT'} name = ['Jack', 'Rose'] d['name'] = name d['info'] = info d['data'] = datetime.datetime.now() d.close() '''读取文件''' d = shelve.open('shelve_test')

python序列化: json & pickle & shelve 模块

一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进行转换Json模块提供了四个功能:dumps.dump.loads.loadpickle模块提供了四个功能:dumps.dump.loads.load json模块:下面通过一些示例来学习:首先我们来看json的dumps和loads方法 s1={"k1":"v1"}

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,

python shelve 模块

一.简介 在python3中我们使用json或者pickle持久化数据, 能dump多次,但只能load一次,因为先前的数据已经被后面dump的数据覆盖掉了. 如果我们想要实现dump和load多次,可以使用shelve模块. shelve模块可以持久化所有pickle所支持的数据类型. 代码: #持久化数据 import shelve import datetime # info = {'name': 'bigberg', 'age': 22} # name = ['Apoll', 'Zous

python 之 random 模块、 shutil 模块、shelve模块、 xml模块

6.12 random 模块 print(random.random()) (0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3)) [1,3] 大于等于1且小于等于3之间的整数 print(random.randrange(1,3)) [1,3) 大于等于1且小于3之间的整数 print(random.choice ( [1,'23', [4,5] ] ) )   1或者23或者[4,5] print(random.sample( [1,'2

python课堂整理26 ---json、pickle、shelve模块(序列化处理)

一.序列化 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,python中叫pickling 序列化之后就可以把序列化后的内容写入磁盘或通过网络传输到别的机器上 反序列化:unpickling,也就是loads的过程 二.json模块 功能:处理成字符串 可以让不同语言间进行数据交换 import json dic = {"name": "alex"} data = json.dumps(dic) print(data, type(data)) 经js