序列化
一. 储存数据或者网络传输对我们的对象进行处理,处理成方便存储和传输的数据格式的过程叫做序列化.
二. 在python中存在三种序列化方案.
1. pickle.将任意数据类型转化成bytes并写入文件,也可以把文件中写好的bytes转换回python的数据,这个过程成为反序列化.
import pickle
class cat:
def __init__(self,**,**):
pass
c = cat(**,**)
bs = pickle.dumps(c) #转化成bytes
cc = pickle.loads(bs) #转换回来
多个对象写入文件
lst = [Cat("jerry",19),Cat("jerry",20),Cat("jerry",21)]
f = open("cat",mode="wb") #打开文件
pickle.dump(lst,f) #把多个对象写入文件
f = open("cat",mode="rb")
ll = pickle.load(f) #从文件中读取
2. Shelve.作为一种小型数据库使用. shelve提供python的持久化操作
3. Json.将python中常见的字典,列表转化成字符串,是目前前后端数据交互使用频率最高的一种数据格式.
import json
dic = {"a": "女王", "b": "萝莉", "c": "⼩清新"}
s = json.dumps(dic,ensure_ascii=False) #处理中文
print(s)
import json
s = '{"a": "⼥王", "b": "萝莉", "c": "⼩清新"}'
dic = json.loads(s)
print(dic)
大量数据处理
import json
lst = [{"a": 1}, {"b": 2}, {"c": 3}]
# 写⼊
f = open("test.json", mode="w", encoding="utf-8")
for el in lst:
s = json.dumps(el, ensure_ascii=True) + " "
f.write(s)
f.close()
# 读取
f = open("test.json", mode="r", encoding="utf-8")
for line in f:
dic = json.loads(line.strip())
print(dic)
f.close()