Python学习—14 序列化
把变量从内存中变成可存储或传输的过程称之为序列化
,在Python中叫pickling
,在其他语言中也被称之为serialization,marshalling,flattening等等。
pickle
pickle是Python语言特定的序列化模块,序列化的内容只能是Python才能反序列化。
pickle.dumps(obj) #把任意对象序列化成一个bytes
pickle.dump(obj, fp) #序列化到file-like Object(例如文件)里
pickle.loads(bytes_obj) #反序列化
pickle.load(fp) #从file-like Object(例如文件)里反序列化
示例:
# 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)
输出:
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.'
反序列化:
# coding: utf-8
import pickle
fp = open('pickle.data', 'rb')
print(pickle.load(fp))
输出:
{'age': 20, 'score': 88, 'name': 'Bob'}
如果要把序列化搞得更通用、更符合Web标准,就可以使用json
模块。
JSON
Python内置的json
模块提供了非常完善的Python对象到JSON格式的转换。
json.dumps(obj) #序列化
json.dump(obj, fp) #序列化到file-like Object(例如文件)里
json.loads(str) #反序列化
json.load(fp) #从file-like Object(例如文件)里反序列化
示例:
# coding: utf-8
import json
d = dict(name='Bob', age=20, score=88)
print(json.dumps(d))
输出:
{"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 |
作者: 飞鸿影
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
出处:https://www.cnblogs.com/52fhy/p/6368104.html