博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day6 shelve模块
阅读量:5893 次
发布时间:2019-06-19

本文共 1710 字,大约阅读时间需要 5 分钟。

    shelve模块

    shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式,shelve模块是对pickle模块的补充。我们知道,如果调用pickle模块,向文件中dump()字符串的时候,读取的时候必须一次一次进行load()。

    首先,我们使用pickle向文件中写入信息,来看一下情况:

    import pickle

  ufo = {
"alex":123,"tom":456}           
  l1 = [11,22,33,44]
  with open("file_json","wb") as f:
  pickle.dump(ufo,f)                     #把字典dump()到文件中
  pickle.dump(l1,f)                      #把列表dump()到文件中

    上面程序,我们向文件"file_json"中写入了一个字典和一个列表。接下来,我们使用load()来读取文件中的信息。如下:

    import pickle

  with open("file_json","rb") as f:
  a = pickle.load(f)           #使用load()反序列化,读取文件信息
  print(a)
  b = pickle.load(f)           #使用load()反序列化,读取文件信息
  print(b)

    运行如下:

    {'alex': 123, 'tom': 456}

  [11, 22, 33, 44]

    从上面代码运行的结果可以看出,得到的是上面dump()进去的字典和列表。但是只能一次一次的读取,遵循先进先出的原则,最先dump()进去的数据也最先load()出来,但是这样也存在一定的缺陷,比如我想直接取列表的信息,但是由于列表是后面添加进去的,因为只能load()两次,如何才能直接提取列表呢?shelve模块就是解决这样的问题的。

    shelve模块存储文件信息

import shelveclass func(object):    def __init__(self,n):        self.n = nd = {
"alex":"sb","tom":"is","aoi":"456"}l = ["alex","pipei","erbi"]fun = func(1568) #生成一个类个体with shelve.open("shelve_test") as f: #使用shelve模块打开文件 f["fun"] = fun #往shelve模块中添加变量,以k,v形式进行添加文件信息,首先添加一个类变量 f["d"] = d #添加一个字典 f["l"] = l #添加一个列表

    shelve模块读取文件信息

import shelve#读取with shelve.open("shelve_test","r") as f:     #使用shelve打开模块    a = f.get("d")    print(a)    b = f.get("fun")           #指定键值对形式获取存储信息    print(b.n)

    运行结果如下:

    {'alex': 'sb', 'tom': 'is', 'aoi': '456'}

  1568

    可以看出,使用shelve模块,能够指定命的形式来获取存储的信息,不需要按照顺序,让我们使用比较方便,克服了pickle的缺陷,因此,要经常使用shelve模块进行文件的存储与读取。   

    注意:使用shelve模块打开文件的方法是open(),shelve.open("file_name"),不需要指定以什么形式打开,并且读取文件的时候也是,使用shelve.open()打开文件。要想获得shelve模块中的文件信息,要使用get()方法,f.get()来获取文件中的信息。

转载于:https://www.cnblogs.com/gengcx/p/6917898.html

你可能感兴趣的文章
flash back mysql_mysqlbinlog flashback 使用最佳实践
查看>>
hive中如何把13位转化为时间_sqoop1 导入 hive parquet 表中 时间戳调整为日期
查看>>
mysql书外键_[转] mysql 外键(Foreign Key)的详解和实例
查看>>
mysql存储引擎模式_MySQL存储引擎
查看>>
python入门小游戏代码_【Python】Python代码实现“FlappyBird”小游戏
查看>>
mysql 5.5.57互为主从_MYSQL 5.5.18 互为主从配置成功
查看>>
mysql5002_mysql新手进阶02
查看>>
python类 del_全面了解Python类的内置方法
查看>>
前后端传图片用base64好吗_前后端分离 前台传base64的图片 tp5.1.1进行处理
查看>>
java对象的排序_Java对象排序两种方法
查看>>
java jni 原理_使用JNI技术实现Java和C++的交互
查看>>
java 重写system.out_重写System.out.println(String x)方法
查看>>
mysql client命令行选项
查看>>
vc遍历网页表单并自动填写提交 .
查看>>
配置ORACLE 11g绿色版客户端和PLSQL远程连接环境
查看>>
ASP.NET中 DataList(数据列表)的使用前台绑定
查看>>
Linux学习之CentOS(八)--Linux系统的分区概念
查看>>
主域控制器的安装与配置步骤与方法
查看>>
JavaScript---事件
查看>>
Android NDK入门实例 计算斐波那契数列一生成jni头文件
查看>>