之前,在学习python时,一直弄不明白pickle和json模块的序列化和反序例化之间的区别和用法,最近闲来有时间,重新研究了这两个模块,也算是基本搞明白他们之中的区别了。
用于序列化的两个模块,
- json,用于字符串 和 python数据类型间进行转换
- pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
看下面这个例子,或许你能明白他们之间的区别
import pickle data = [‘aa‘, ‘bb‘, ‘cc‘] # dumps 将数据通过特殊的形式转换为只有python语言认识的字符串 p_str = pickle.dumps(data) print(p_str) # loads 将pickle数据转换为python的数据结构 mes = pickle.loads(p_str) print(mes) # dump 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件 with open(‘tmp.pw‘,‘wb‘) as f: pickle.dump(data,f) # load 从数据文件中读取数据,并转换为python的数据结构 with open(‘tmp.pw‘,‘rb‘) as f: print(pickle.load(f))
json和pickle模块中的dump和load操作其实就是对数据进行编码和解码的处理
- 编码:把一个Python对象编码转换成Json字符串 json.dumps()
- 解码:把Json格式字符串解码转换成Python对象 json.loads()