Python_序列化和反序列化模块
序列化:将对象转换为可通过网络传输或可存储到本地磁盘的数据格式的转换过程,称为序列化,反之,称为反序列化
json: 用来实现不同语言,不同程序直接的信息交互,json支持所有高级语言之间的序列化交互,json只能通过 字典—>字符串—>字典 的格式转换
注:json是读写序列化格式
pickle: python 中独有的序列化方法,如果有需要Python可以把Python中几乎所有的类型都可以序列化转换
注:pickle是二进制读写序列化格式
json与pickle都有相同的方法:
x.dumps():将得到的json或pickle数据序列化为一个bytes,然后将这个bytes写入磁盘或进行传输
x.loads():把得到的json或pickle数据从磁盘中读到内存中时,把内容先读到一个bytes中,然后再用loads反序列化出对象
x.dump():可直接将得到的json或pickle数据序列化后保存到文件中
x.load():可直接读取文件中的json或pickle数据进行反序列化
实例:
import json,pickle # f = open('测试文件.txt', 'w') # json 运用 'w',写入 f = open('测试文件.txt', 'wb') # pickle 运用二进制'wb'写入 info = { 'Presly': 'come on', 'Vera': '2333', 'mini': 'hello' } # json.dump(info, f) # 转为纯字符串 # f.write(json.dumps(info)) pickle.dump(info, f) # 转为二进制 # f.write(pickle.dumps(info)) f.close()
import json , pickle # f = open('测试文件.txt', 'r') f = open('测试文件.txt', 'rb') # data = json.load(f) # 只能识别字符串,不能识别二进制 # data = json.loads(f.read()) # data = pickle.load(f) # 只能识别二进制 data = pickle.loads(f.read()) print(data) f.close()