'''
序列化的作用:将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。
以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
个人理解:序列化将内存中的一个对象存入硬盘(文件),而反序列化将硬盘中的对象重现到内存中。
Python中的序列化:
1)json模块:dump/load dumps/loads dump/load直接将对象序列化到硬盘中,dumps/loads 则是将对象序列化成字符串
2)pickle模块: dump/load dumps/loads 类似json模块,值得注意的是pickle默认是用来操作二进制文件的
'''
# import json
#
# # json.dump and load 测试
# obj1={1:"shabi1",2:"shabi2"}
# obj1_file=open('obj1.txt','w')
# json.dump(obj1,obj1_file)
# obj1_file=open('obj1.txt','r')
# obj1=json.load(obj1_file)
# print(obj1)
# #json.dumps and loads 测试
# obj1_dumps=json.dumps(obj1)
# print(obj1_dumps,type(obj1_dumps))
# obj1_loads=json.loads(obj1_dumps)
# print(obj1_loads,type(obj1_loads))
import pickle
#pickle.dump and load 测试
obj2={3:"shabi3",4:"shabi5"}
obj2_file=open("obj2.txt",'wb') #注意,这里打开文件的格式要使用二进制,pickle默认是操作二进制文件的
obj2_dump=pickle.dump(obj2,obj2_file)
obj2_file=open("obj2.txt",'rb')
obj2_load=pickle.load(obj2_file)
print(obj2_load)
#pickle.dumps and loads 测试
obj2_dumps=pickle.dumps(obj2)
print(obj2_dumps)
obj2_loads=pickle.loads(obj2_dumps)
print(obj2_loads)