Python学习--14 序列化

拼搏现实的明天。 2022-07-12 01:19 239阅读 0赞

把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等。

pickle

pickle是Python语言特定的序列化模块,序列化的内容只能是Python才能反序列化。

  1. pickle.dumps(obj) #把任意对象序列化成一个bytes pickle.dump(obj, fp) #序列化到file-like Object(例如文件)里 pickle.loads(bytes_obj) #反序列化 pickle.load(fp) #从file-like Object(例如文件)里反序列化

示例:

  1. # coding: utf-8 import pickle d = dict(name='Bob', age=20, score=88) print(pickle.dumps(d)) # 将序列化的bytes内容保存到文件中: fp = open('pickle.data', 'wb') pickle.dump(d, fp)

输出:

  1. b'\x80\x03}q\x00(X\x05\x00\x00\x00scoreq\x01KXX\x04\x00\x00\x00nameq\x02X\x03\x00\x00\x00Bobq\x03X\x03\x00\x00\x00ageq\x04K\x14u.'

反序列化:

  1. # coding: utf-8 import pickle fp = open('pickle.data', 'rb') print(pickle.load(fp))

输出:

  1. {'age': 20, 'score': 88, 'name': 'Bob'}

如果要把序列化搞得更通用、更符合Web标准,就可以使用json模块。

JSON

Python内置的json模块提供了非常完善的Python对象到JSON格式的转换。

  1. json.dumps(obj) #序列化 json.dump(obj, fp) #序列化到file-like Object(例如文件)里 json.loads(str) #反序列化 json.load(fp) #从file-like Object(例如文件)里反序列化

示例:

  1. # coding: utf-8 import json d = dict(name='Bob', age=20, score=88) print(json.dumps(d))

输出:

  1. {"age": 20, "name": "Bob", "score": 88}

JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下:


































JSON类型 Python类型
{} dict
[] list
“string” str
1234.56 int或float
true/false True/False
null None

发表评论

表情:
评论列表 (有 0 条评论,239人围观)

还没有评论,来说两句吧...

相关阅读