之前, 在学习 python 时, 一直弄不明白 pickle 和 json 模块的序列化和反序例化之间的区别和用法, 最近闲来有时间, 重新研究了这两个模块, 也算是基本搞明白他们之中的区别了
用于序列化的两个模块,
json, 用于字符串 和 python 数据类型间进行转换
pickle, 用于 python 特有的类型 和 python 的数据类型间进行转换
Json 模块提供了四个功能: dumpsdumploadsload
pickle 模块提供了四个功能: dumpsdumploadsload
看下面这个例子, 或许你能明白他们之间的区别
- 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()
来源: http://www.bubuko.com/infodetail-2510404.html