版权声明:本文为博主原创文章,未经博主同意不得转载。 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. Spring MVC学习一

    SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherServlet负责转发每一个Request请 ...

  2. es6 ---- babel

    babel-polyfill是ES6的补丁,由于babel只支持ES6语法部分的编译,对于新增的类我们还需要安装额外的polyfill,虽然现在Chrome和Firefox都已经添加了Promise等 ...

  3. mac 下删除xcode后使用git

    1. http://blog.bobbyallen.me/2014/03/07/how-to-install-git-without-having-to-install-xcode-on-macosx ...

  4. 3.eclipse中 maven打包web工程几种方式

    1.右键项目-export 选择war file导出即可 2.第二种:右键项目-RUN AS -maven build..goals填入:clean package 第三种方式:右键项目.选择Debu ...

  5. spring计时工具类stopwatch用法

    public class Test { public static void main(String[] args) { StopWatch stopWatch = new StopWatch(); ...

  6. mysql存储过程命令行批量插入N条数据命令

    原文:http://blog.csdn.net/tomcat_2014/article/details/53377924 delimiter $$ create procedure myproc () ...

  7. MongoDb 判断字段长度比较好的方法

    查询某字段长度超过一定长度时的方法, MongoDB中可能不好处理,一般这样: db.test.find({ $where:"this.F_DAQDATA.legnth>600&quo ...

  8. ios等待ualertview弹出动画完成后再跳转至其他页面

    [self performSelector:@selector(popView:) withObject:nil afterDelay:2.0];

  9. linux内核I2C子系统学习(三)

    写设备驱动: 四部曲: 构建i2c_driver 注册i2c_driver 构建i2c_client ( 第一种方法:注册字符设备驱动.第二种方法:通过板文件的i2c_board_info填充,然后注 ...

  10. intellij idea 提示找不到default activivty

      更换环境之后 ,intellij idea 提示找不到默认的activity.   而查看源代码. 在代码中明显已经设置了默认activity了. 后来发现.程序中有个库工程中的AndroidMe ...