python常用模块之shelve模块

shelve模块是一个简单的k,v将内存中的数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据类型

我们在上面讲json、pickle模块的时候,说过都不能dump都多次,那么是真的吗?当然不是的, shelve模块就可以dump多次,shelve模块其实就是封装了pickle模块,并且顺序不会乱,因为shelve模块是k,v结构,给dump的数据指定一个名字,下次用这个名字就可以load回来。

序列化:
此模块的操作在linux系统下讲解

#!/usr/bin/pythonimport shelvef = shelve.open("shelve_test")  # 使用shelve模块打开一个文件names = ["li","xiao","rain"]
info = {"name":"li","age":22}f['names'] = names  # 持久化列表
f['info_dir'] = info  # 持久化字典f.close()

shelve模块的操作:

# 在linux系统下,ipython3
In [1]: import shelveIn [2]: f = shelve.open("shelve_test")  # 此时的f就相当于是一个文件对象,即可以像字典样操作In [3]: f.get('names')
Out[3]: ['li', 'xiao', 'rain']In [4]: f.get('info_dir')
Out[4]: {'name': 'li', 'age': 22}In [5]: f.keys()
Out[5]: KeysView(<shelve.DbfilenameShelf object at 0x7f6a43269198>)  # 是一个列表In [6]: list(f.keys())
Out[6]: ['names', 'info_dir']  # 列表中存了两个持久化的kIn [7]: list(f.items())
Out[7]: [('names', ['li', 'xiao', 'rain']), ('info_dir', {'name': 'li', 'age': 22})]# 删除
In [8]: del f['names']  # 删除持久化的kIn [9]: f.close()  # 关闭文件In [10]: f = shelve.open("shelve_test")  # 重新打开文件In [12]: f.get('names')  # 无任何输出# 增加
In [13]: f['scores'] = [1,2,3,4,"rain"]  # In [14]: f.close()In [15]: f = shelve.open("shelve_test")In [16]: f.get('scores')
Out[16]: [1, 2, 3, 4, 'rain']# 修改,相当于是重新赋值
In [17]: f['scores']
Out[17]: [1, 2, 3, 4, 'rain']In [18]: f['scores'] = [1,2,3,4,5]In [19]: f.close()In [20]: f = shelve.open("shelve_test")In [24]: f['scores']
Out[24]: [1, 2, 3, 4, 5]

反序列化:

#!/usr/bin/pythonimport shelved = shelve.open('shelve_test')# print(d['names'])  # 因为在之前的操作中已经删除了这个
print(d['info_dir'])d.close()

输出结果为:

root@DESKTOP-G4V06P4:~/codes# python3 反序列化.py
{'age': 22, 'name': 'li'}

转载于:https://www.cnblogs.com/xiaoyafei/p/9037195.html

python常用模块之shelve模块相关推荐

  1. python shelve模块_python常用模块之shelve模块

    python常用模块之shelve模块 shelve模块是一个简单的k,v将内存中的数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据类型 我们在上面讲json.pickle ...

  2. python常用内置模块-Python常用内置模块之xml模块

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  3. python常用内置模块-Python常用内置模块之xml模块(详解)

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  4. python shelve模块_python3 shelve模块的详解

    python3 shelve模块的详解 一.简介 在python3中我们使用json或者pickle持久化数据,能dump多次,但只能load一次,因为先前的数据已经被后面dump的数据覆盖掉了.如果 ...

  5. 初学者python笔记(json模块、pickle模块、xml模块、shelve模块)

    文章目录 json模块 正常数据转化(复杂) json模块的相关操作 pickle模块 shelve模块 xml模块 在Python中,json模块.pickle模块.xml模块.shelve模块这四 ...

  6. python shelve模块_python3 shelve模块的实例用法讲解

    python3 shelve模块的详解 python3 shelve模块的详解 一.简介 在python3中我们使用json或者pickle持久化数据,能dump多次,但只能load一次,因为先前的数 ...

  7. python三十六:shelve模块

    shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写.key必须为字符串,而值可以是python所支持的数据类型. import shelvef = shelve ...

  8. Python常用数据结构之heapq模块

    Python数据结构常用模块:collections.heapq.operator.itertools heapq 堆是一种特殊的树形结构,通常我们所说的堆的数据结构指的是完全二叉树,并且根节点的值小 ...

  9. python常用的日期时间模块

    今天.昨天.明天 import datetime today = datetime.date.today() # 今天 yesterday = today - datetime.timedelta(d ...

最新文章

  1. (转载)OC学习篇之---KVC和KVO操作
  2. 代码重构的实战经验和那些坑
  3. 什么是Code Review 代码审查
  4. Codeforces A - Bear and Prime 100(交互题)
  5. es6 --- 使用node的memoryUsage检测WeakMap()
  6. P1488 肥猫的游戏
  7. mysql配置性能_MySQL配置性能优化
  8. gitlab和jenkins发布代码
  9. Android 创建一个新的Activity
  10. 从有限状态机(FSM)到行为树(Behavior Tree)(1)
  11. springboot map数据类型注入_Spring Boot(五):春眠不觉晓,Mybatis知多少
  12. python 下标 遍历列表_Python中遍历列表中元素的操作
  13. 计算机组成第五章课后答案,计算机组成原理第五章答案.doc
  14. 南京邮电大学电工电子基础B实验二(电气参数测量和伏安特性)
  15. creo绘图属性模板_Creo定制模型及绘图模板.doc
  16. [附源码]计算机毕业设计springboot微信点餐系统
  17. 点阵 LED 显示设计实验
  18. 计算机一级插入页码,计算机一级WPS考试:WPS文字中页码插入及排版技巧
  19. ESXI 7.0 安装教程
  20. 【JSON解析】JSON解析

热门文章

  1. ios开发值json数据文件的存取
  2. NSException异常处理
  3. find查找文件的时候排除某个或几个文件或目录
  4. mybatis配置时出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)...
  5. 扩展webupload插件,增加ui界面
  6. Sum All Numbers in a Range
  7. auto make System.map to C header file
  8. CactiEZ V10.1 中文版 Cacti中文解决方案+使用教程(1)
  9. 一步一步写二叉查找树
  10. Ubutu16.04+Cuda9.2/9.0+Cudnn7.12/7.05+TensorFlow-gpu-1.8/1.6