python序列化
什么是序列化:
如何使用序列化:
什么事序列化
序列化,是将一个抽象概念、逻辑概念转换成字节或者字符数据进行本地的一个过程。就是将类变成字符存储在本地;
反序列化:将存储在本地的对象文件,还原为一个对象;
如何使用序列化
JSON模块:
json.dumps 将 Python 对象编码成 JSON 字符串
json.loads 将已编码的 JSON 字符串解码为 Python 对象
json.dump()用于将dict类型的数据转成str,并写入到json文件中。
json.load()用于从json文件中读取数据
json 类型转换到 python 的类型对照表:
| JSON | Python |
|---|---|
| object | dict |
| array | list |
| string | unicode |
| number (int) | int, long |
| number (real) | float |
| true | True |
| false | False |
| null | None |
python 原始类型向 json 类型的转化对照表:
| Python | JSON |
|---|---|
| dict | object |
| list, tuple | array |
| str, unicode | string |
| int, long, float | number |
| True | true |
| False | false |
| None | null |
pickle模块
pickle.dump(obj, file[, protocol])
序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。
pickle.load(file)
反序列化对象。将文件中的数据解析为一个Python对象。
pickle.dumps(obj):以字节对象形式返回封装的对象,不需要写入文件中
pickle.loads(bytes_object): 从字节对象中读取被封装的对象,并返回
import json
dict1 = {"name": "wdx", "age": 14, "gender": "男"}
tuple1 = ("a", "b", "c")
if __name__ == "__main__":
# 使用json.dumps() 将 Python 对象编码成 JSON 字符串
aa = json.dumps(dict1)
print(aa) # OutPut:{"name": "wdx", "age": 14, "gender": "\u7537"}
with open("e:/dd.txt","w") as f:
f.write(aa) # OutPut:写入成功:{"name": "wdx", "age": 14, "gender": "\u7537"}
bb = json.dumps(tuple1)
print(bb) # OutPut:["a", "b", "c"] 成功将元组转换为json字符串数据
print(type(bb))
cc = json.loads(bb)
print(type(cc)) # 这里将元组转换为了list
import pickle
class PickleTest:
def __init__(self, name, age):
self.name = name
self.age = age
if __name__ == "__main__":
aa = pickle.dumps(PickleTest)
print(aa)
# aa输出为:b'\x80\x03c__main__\nPickleTest\nq\x00.'
with open("e:/cc.txt", "wb") as f:
pickle.dump(PickleTest, f)
# 文件中内容为:彣浟楡彮楐正敬敔瑳焊⸀
with open("e:/cc.txt", "rb") as f:
bb = pickle.load(f)
print(bb)
# bb输出为:<class '__main__.PickleTest'>
本文详细介绍了Python中序列化和反序列化的概念及应用,包括JSON和pickle模块的使用,展示了如何将Python对象转化为可存储或传输的格式,以及如何将这些格式还原为Python对象。
1977

被折叠的 条评论
为什么被折叠?



