python序列化: json & pickle & shelve 模块
Posted Mr. Pan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python序列化: json & pickle & shelve 模块相关的知识,希望对你有一定的参考价值。
一、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
以上是关于python序列化: json & pickle & shelve 模块的主要内容,如果未能解决你的问题,请参考以下文章