版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/signjing/article/details/36029981

标准库:一些最爱

shelve

Shelve唯一有趣的函数是open。

在调用它的时候(使用文件名称作为參数),它会返回一个Shelf对象,能够用它来存储内容。

仅仅须要把它当作普通的字典(可是键一定要作为字符串)来操作就可以,在完毕工作之后,调用它的close方法。

 

意识到shelve.open函数返回的对象并非普通的映射是非常重要的。

>>> import shelve

>>> s=shelve.open('a.txt')

>>> s['x']=['a','b','c']

>>> s['x'].append('d')

>>> s['x']

['a', 'b', 'c']

 

‘d’去哪了?

当你在shelf对象中查找元素的时候,这个对象都会依据已经存储的版本号进行又一次构建。当你将元素赋给某个键的时候。它就被存储了。

上例中的操作例如以下:

列表[‘a’,’b’,’c’]存储在键x下;

获得存储的表示,而且依据它来创建新的列表,而’d’被加入到这个副本中。改动的版本号没有被保存。

终于,再次获得原始版本号——没有’d’。

为了正确地使用shelve模块改动存储的对象。必须将暂时变量绑定到获得的副本上。而且在它被改动后又一次存储这个副本。

>>> temp=s['x']

>>> temp.append('d')

>>> s['x']=temp

>>> s['x']

['a', 'b', 'c', 'd']

还有个解决的方法,将open函数的writeback參数设为True。

假设这样做,全部从shelf读取或者赋值到shelf的数据结构都会保存在内存(缓存)中,而且仅仅有在关闭shelf的时候才写回到磁盘中。假设处理的数据不大,而且不想考虑这些问题。那么将writeback设为True(确保在最后关闭了shelf)的方法还是不错的。

python基础教程_学习笔记18:标准库:一些最爱——shelve的更多相关文章

  1. python基础教程_学习笔记14:标准库:一些最爱——re

    标准库:一些最爱 re re模块包括对正則表達式的支持,由于以前系统学习过正則表達式,所以基础内容略过,直接看python对于正則表達式的支持. 正則表達式的学习,见<Mastering Reg ...

  2. python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/signjing/article/details/36201499 标准库:一些最爱 集合.堆和双端队 ...

  3. python基础教程_学习笔记12:充电时刻——模块

    充电时刻--模块 python的标准安装包含一组模块,称为标准库. 模块 >>> import math >>> math.sin(0) 0.0 模块是程序 不论什 ...

  4. python基础教程_学习笔记1:序列-1

    序列 数据结构:通过某种方式组织在一起的数据元素的集合,这些数据元素能够是数字或者字符,甚至能够是其它数据结构. python中,最主要的数据结构是序列. 序列中的每一个元素被分配一个序号--即元素的 ...

  5. python基础教程_学习笔记10:异常

    异常 什么是异常 Python用异常对象来表示异常情况.遇到错误后,会引发异常.假设异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止运行: >>> ...

  6. python基础教程_学习笔记9:抽象

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/signjing/article/details/30745465 抽象 懒惰即美德. 抽象和结构 抽 ...

  7. python基础教程_学习笔记11:魔法方法、属性和迭代器

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/signjing/article/details/31417309 魔法方法.属性和迭代器 在pyth ...

  8. python基础课程_学习笔记15:标准库:有些收藏夹——fileinput

    标准库:有些收藏夹 fileinput 重要功能 性能 叙述性说明 input([files[,inplace[,backup]]) 便于遍历多个输入流中的行 filename() 返回当前文件的名称 ...

  9. python基础课程_学习笔记13:标准库:有些收藏夹——sys

    标准库:有些收藏夹 sys sys这个模块可以让你访问和python解释器联系紧密的变量和函数. sys模块中一些重要的函数和变量 函数/变量 描写叙述 argv 命令行參数,包含脚本名称 exit( ...

随机推荐

  1. Swoole 简单学习

    Swoole 百度百科:是一个PHP扩展,扩展不是为了提升网站的性能,是为了提升网站的开发效率.最少的性能损耗,换取最大 的开发效率.利用Swoole扩展,开发一个复杂的Web功能,可以在很短的时间内 ...

  2. LeetCode OJ--Single Number

    https://oj.leetcode.com/problems/single-number/ 给一个数列,其中只有一个数不是两两相同的,在O(n)时间内求出来,并且不使用额外空间. 使用异或操作,如 ...

  3. osstatus -9801 workerman websocket 小程序不带端口

    帮事业部的同事,解决问题,坑总结 小程序出现,osstatus -9801 情况好多,说一下配置环境可解决的方法和问题 tls 1.2, php 5.6+, nginx, workerman 做的 w ...

  4. POJ2104Kth Number

    整体二分模板题, 有些细节需要注意 #include<cstdio> #include<cctype> #include<climits> #include< ...

  5. python 常用库, 随时添加中

    python只有你想不到的库,只要你能想到,肯定有对应的库 前面*的为标准库,**的是pip里面的,***则是要手动安装的1)python运行时服务* copy: copy模块提供了对复合(compo ...

  6. 为什么我们要用Python

    最近有一个朋友问我:为什么我要用Python,这是一个好问题,今天有空,把这个问题简单整理了一下,回来朋友的问题.该整理主要来源于网络和其他资料,如果有侵权还请告知.         Python的好 ...

  7. Spring IOC知识java反射

    [1] Java反射知识-->Spring IoC :http://www.iteye.com/topic/1123081 [2] Java动态代理-->Spring AOP :http: ...

  8. 1、CRM2011编程实战——清空指定页签以下的全部选项,并对页签以下的指定控件进行操作

    需求:当页面载入时,"呼叫编号"保持不变,"任务号"自己主动更新."接报时间"和"发生日期"自己主动设置为当天日期和时间 ...

  9. 南阳 oj 表达式求值 题目35 数据结构 NYO题目链接

     建议不会的看别人的代码自己在之上模拟一遍,仅仅要耐心模拟就会做出来 题目链接:http://acm.nyist.net/JudgeOnline/problem.php? pid=35 #incl ...

  10. linux与python

    linux一般都装有python,但是版本不一定,需要自己查看,如果版本过低,需要重装.查看python版本方法,直接在命令行输入 python,此时会进入python命令行,同时会显示python版 ...