1.序列化:
目录
是将对象的的状态信息转换为可以存储或传输的形式的过程。
2.反序列化:
将有序的二进制序列转换成某种对象(字典、列表)的过程。
3.JSON格式:
,json是一种轻量级的数据存储转换
json对值的存储时通过键值对映射 {“key”:“value”}的方式存放他的key和value值,json只能对字典进行转换
# json.load() 加载数据
# 加载用户信息
def load_user():
try:
with open('user.json', 'r', encoding='utf-8') as fp:
user_dict = json.load(fp)
print("我们现在的用户信息有:", user_dict)
return user_dict
except:
user_dict = {}
# print(user_dict)
return user_dict
# json.dump() 写入数据
# 写入用户信息
def up_user(user_dict,name,gold):
user_dict[name] = {"gold":gold}
with open("user.json", "w", encoding="utf-8") as fp:
json.dump(user_dict, fp, ensure_ascii=False, indent=4)
4.pickle模块:
pickle模块实现了对python对象的序列化和反序列化的二进制协议,pickle使用的数据格式时特定于python的
# pickle.load() 加载信息
# 用户加载页面
def load_user(self):
file_name = self.sys_info + "_user.pickle"
try:
with open(file_name, "rb") as fp:
self.userdict = pickle.load(fp)
except:
pass
# pickle.dumps() 写入信息
with open(file_name, "wb") as fp:
pickle.dump(self.userdict, fp)
5.shelve模块:
shelve是一个简单的数据存储方案,类似key-value数据库,内部是通过pickle协议来实现数据的序列化,支持pickle支持的所有类型的数据的序列化。shelve只有一个open函数。
import shelve
# 写入数据
with shelve.open('student') as db:
db['name'] = 'Tom'
db['age'] = 19
db['hobby'] = ['篮球', '看电影', '弹吉他']
db['other_info'] = {'sno': 1, 'addr': 'xxxx'}
# 读取数据
with shelve.open('student') as db:
for key, value in db.items():
print(key, ': ', value)
6. dump:
将序列化对象转换成一个文件对数据进行存储
dump:将一个对象化存入json文件
data_obj:是要转换的文件夹的名称
encoding: 指定编码方式
with open("data_obj", "w", encoding="UTF-8") as fp:
xx_dump = json.dump("data_obj", fp, ensure_ascii=False)
7. dumps:
将序列化对象转换成一个字符串
dumps:序列化一个对象
sort_keys:是否以主键来排序 True or False
indent:缩进的格式,=4,以四个空格作为缩进,
ensure_ascii:是否已ascii作为序列化编码,True or False
xx_dumps = json.dumps(data_obj, sort_keys=True, indent=4, ensure_ascii=False)