python中的序列化与反序列化

Posted change1220

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的序列化与反序列化相关的知识,希望对你有一定的参考价值。

之前,在学习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()

 

以上是关于python中的序列化与反序列化的主要内容,如果未能解决你的问题,请参考以下文章

python-序列化与反序列化

Python学习之-序列化与反序列化

python-序列化与反序列化(loadsloaddumpsdump)

Python序列化与反序列化pickle

Python 序列化与反序列化

Python标准库之shelve模块(序列化与反序列化)