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'>