学习简述:json pickle shelve
什么是序列化:
我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在python中叫做picking。
序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。
json
如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。
import json
dic={'name':'alvin','age':23,'sex':'male'}
print(type(dic))#<class 'dict'>
j=json.dumps(dic)
print(type(j))#<class 'str'>
import json
dic = {'name':'niu','age':'22'}
f = open('JSON_text','w')
#加载进去
data = json.dumps(dic) #这两行等价于
f.write(data) #json.dump(dic,f)
f.close()
import json
f = open('JSON_text','r')
data = f.read() #data = json.load(f)
data = json.loads(data) #加载出来
print(data['name'])
pickle
import pickle
dic={'name':'niu','age':22}
print(type(dic))#<class 'dict'>
j=pickle.dumps(dic)
print(type(j))#<class 'bytes'>
import pickle
def foo():
print('ok')
data = pickle.dumps(foo)
f = open('pickle.text','wb')
f.write(data)
f.close()
import pickle
def foo():
print('ok')
f = open('pickle.text','rb')
data = f.read()
data = pickle.loads(data)
data()
shelve shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型
import shelve
f = shelve.open(r'shelve.txt')
f['info']={'name':'niu','age':'18'}
data = f.get('info')['age']
print(data)