python 序列化 pickle和json
我们把对象(变量)从内存中变成可存储或传输的过程称为序列化,在Python中用pickle或json标准库。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输的别的计算机上。
pickle:支持Python里所有的数据类型(包括函数)
json:支持str,int,tule,list,dict
如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为json,因为json表示出来就是一个字符串,可以被所以语言所读取,也可以方便地存储到磁盘或者通过网络传输。json不仅是标准格式,而且比xml快,可以直接在web页面中读取,非常方便。
import json
#---序列化--- dic={'name':'jack','age':22,'sex':'male'} data=json.dumps(dic) f=open('json_test.txt','w') f.write(data) #--json.dump(dic.f)
f.close()
#---反序列化---
fr=open('json_test.txt')
dicdata=json.loads(fr.read()) #---等价于dicdata=json.load(fr)
fz.close()
json:JavaScript Object Notation,是一种轻量级的数据交换格式。Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式。
将Python对象转换成json对象常用的两个函数是dumps和dump,之间唯一的区别就是dump把Python对象转换成json对象生成一个fp文件流,而dumps则生成一个字符串。
将json对象转成Python对象常用的两个函数是load和loads,区别同上。
下面是pickle标准库的用法:
import pickle
#---序列化--- dic={'name':'jack','age':22,'sex':'male'} p=pickle.dumps(dic) f=open('pickle_test','wb') #---等价于pickle.dump(dic,f) f.write(p) f.close()
#---反序列化--- fr=open('pickle_test','rb') dicata=pickle.loads(fr.read()) #---等价于dicdata=pickle.load(fr) fr.close()
参考资料:https://www.cnblogs.com/fmgao-technology/p/9078924.html