版权声明:本文为博主原创文章,未经博主同意不得转载。 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. 让网站永久拥有HTTPS - 申请免费SSL证书并自动续期

    https://blog.csdn.net/xs18952904/article/details/79262646 https://freessl.org/

  2. AC日记——Number Sequence hdu 1711

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. html移动端 -- meta-模板 + rem

    第一种方式: ps 不用除以2<header> <meta charset="utf-8"> <meta name="viewport&qu ...

  4. Codeforces 919 A. Supermarket

    这场cf有点意思,hack场,C题等于1的特判hack很多人(我hack成功3个人,上分了,哈哈哈,咳咳...) D题好像是树形dp,E题好像是中国剩余定理,F题好像还是dp,具体的不清楚,最近dp的 ...

  5. Codeforces635C XOR Equation【数学】

    题目链接: http://codeforces.com/contest/635/problem/C 题意: 给定两个数的和s及异或x,求两个数的可能情况. 分析: 我们有公式a+b=a& b∗ ...

  6. HDU 4912 Paths on the tree(LCA+贪心)

    题目链接 Paths on the tree 来源  2014 多校联合训练第5场 Problem B 题意就是给出m条树上的路径,让你求出可以同时选择的互不相交的路径最大数目. 我们先求出每一条路径 ...

  7. Java出现错误“Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )”的问题分析

    若出现:Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )这样的问题,一般是转义字符的问题,下 ...

  8. 类加载器在加载类 的时候就已经对类的static代码块和static变量进行了初始化

    类装载器ClassLoader 类装载器工作机制 类装载器就是寻找类的节码文件并构造出类在JVM内部表示对象的组件.在Java中,类装载器把一个类装入JVM中,要经过以下步骤: [1.]装载:查找和导 ...

  9. react/redux组件库、模板、学习教程

    开源的有蚂蚁金服的: 1.https://pro.ant.design/index-cn 2.https://pro.ant.design/docs/getting-started-cn 3.http ...

  10. libevent和libev的区别对比

    参考了这篇文章: http://www.cnblogs.com/Lifehacker/p/whats_the_difference_between_libevent_and_libev_chinese ...