一、json & pickle & shelve 模块
json,用于字符串 和 python数据类型间进行转换
pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
json模块:
下面通过一些示例来学习:
首先我们来看json的dumps和loads方法
s1={"k1":"v1"}
st=json.dumps(s1)
print(st,type(st))
s='{"k1":"v1"}'
dic=json.loads(s)
print(dic,type(dic))

输出结果

{"k1": "v1"} <class 'str'>
{'k1': 'v1'} <class 'dict'>

可以看出json的dumps方法处理数据时会将数据转换为字符类型,loads则会重新还原它的类型。

再来看json的dump和load方法,通过示例来了解:

li=[11,22,33]
li=json.dump(li,open('db','w'))
li=json.load(open('db','r'))
print(li,type(li))

Json模块dumps、loads、load、dump的区别:

load,dump可加载外部文件,处理文件的数据,dumps,loads主要处理内存中的数据

pickle模块:

下面我们来看pickle的dumps和loads方法,通过示例我们来了解:

import pickle
i=[11,22,33]
r=pickle.dumps(li)
print(r)
result=pickle.loads(r)
print(result)

结果为:

b'\x80\x03]q\x00(K\x0bK\x16K!e.'
[11, 22, 33]

pickle的dupms方法会将数据存为pickle特有的数据类型 

再看pickle的dump和load方法,通过示例我们来了解:

import pickle
i=[11,22,33]
pickle.dump(i,open('db','wb'))
result=pickle.load(open('db','rb'))
print(result)

需要注意的是dump文件或者load文件是需要使用二进制。

 

shelve模块

shelve是一额简单的数据存储方案,他只有一个函数就是open(),这个函数接收一个参数就是文件名,然后返回一个shelf对象,你可以用他来存储东西,就可以简单的把他当作一个字典,当你存储完毕的时候,就调用close函数来关闭。

还是来通过示例来了解:

f = shelve.open('user.db','wc')
f['baidu'] = 'www.baidu.com'
f['qq'] = 'www.qq.com'
f['360'] = 'www.360.cn'
f.close()
f = shelve.open('user.db','a+')
print(f['baidu'],f['qq'],f['360'])

结果为: 

www.baidu.com
www.qq.com
www.360.cn

对shelve序列化数据进行更新操作,通过示例来进行学习:  

f=shelve.open('user_db','c')
f["user"]={"数码电器": {"打印机": "3600", "手机": "3800", "电脑": "8000", "照相机": "10000"},
"服装百货": {"方便面": "4", "夹克": "300", "牛仔裤": "288", "王老吉": "6"},
"化妆品": {"韩束": "388", "欧诗漫": "666", "欧莱雅": "888", "百雀羚": "259"},
"汽车":{"帕沙特": "250000", "奇瑞": "100000", "特斯拉": "999999", "宝马X5": "550000"}
}
a=(f["user"])
a.update({"食品":{"猪肉":"12","牛肉":"28","鸡肉":"8","羊肉":"32",}})
f["user"]=a
f.close()
f=shelve.open('user_db','a')
print(f["user"])

  

 

  

  

  

  

  

最新文章

  1. 学习篇:TypeCodes的2015年博客升级记
  2. Theano2.1.1-基础知识之准备工作
  3. Vue入门笔记#数据绑定语法
  4. linux查看memcached状态
  5. vs2012出现无法启动iis express web 服务器的错误
  6. yum install 与 yum groupinstall 的区别
  7. Templates
  8. bt 介绍以及 bt 种子的hash值(特征值)计算
  9. 商务通代码API
  10. 枚举(分类讨论):BZOJ 1177: [Apio2009]Oil
  11. 由于权限不足而无法读取配置文件出现的HTTP 500.19解决办法
  12. 扔鸡蛋问题具体解释(Egg Dropping Puzzle)
  13. Android———最详细的系统对话框使用
  14. 关于PHP包含文件的方法
  15. javascript之内置函数
  16. 全民抵制“辱华”品牌秀,D&amp;G神回复:呵呵~ 那不是我!
  17. [蓝桥杯]PREV-15.历届试题_格子刷油漆
  18. java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider
  19. 前后分离模型之封装 Api 调用
  20. Vue 中的动画特效

热门文章

  1. Hibernate_添加联系人练习
  2. 洛谷P1082 同余方程 [2012NOIP提高组D2T1] [2017年6月计划 数论06]
  3. 洛谷 3398 仓鼠找sugar——树链剖分
  4. ecshop二次开发之后台秒杀
  5. GDOI模拟4.11~4.13总结
  6. Android——app基础
  7. 使用Redis管道提升性能
  8. 配置了两天python【python可以的】
  9. check constraints
  10. 【水滴石穿】react-native-app