import json
import pickle
"""
序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes(把内存数据存到硬盘上)
序列化
将字符串转为字节byte类型
反序列化
将字节byte转为字符串
"""
json(支持dict,list,tuple,str,set,int)就是每个语言都会有的类型
dict_msg = {'name': '小小',
'age': 18,
'adress': '北京市通州区幸福大街'}
json序列化过程
str_dict_msg = json.dumps(dict_msg)
print(
str_dict_msg) # {"name": "u5c0fu5c0f", "age": 18, "adress": "u5317u4eacu5e02u901au5ddeu533au5e78u798fu5927u8857"}
print(type(str_dict_msg)) # class 'str'>
json反序列化过程
dict_str_dict_msg = json.loads(str_dict_msg)
print(dict_str_dict_msg) # {'name': '小小', 'age': 18, 'adress': '北京市通州区幸福大街'}
print(type(dict_str_dict_msg)) # <class 'dict'>
json文件序列化(就是将看起来很像dict,list,tuple,str,set,int类型的转为str进行存储)
# f = open('json序列化','w',encoding='utf-8')
# json.dump(dict_msg,f)
# f.close()
json 反序列化(就是将文件中看起来很像dict,list,tuple,str,set,int类型的转为对应 的类型)
# f = open('json序列化','r',encoding='utf-8')
# file_json_load = json.load(f)
# print(file_json_load) # {'name': '小小', 'age': 18, 'adress': '北京市通州区幸福大街'} # <class 'dict'>
# f.close()
pickle同样跟json也是这四种方法
def sum(a, b):
return a + b
pickle序列化
func_sum_pickle_dumps = pickle.dumps(sum)
print(func_sum_pickle_dumps) # b'x80x03c__main__
sum
qx00.'
print(pickle.dumps(dict_msg))#b'x80x03}qx00(Xx04x00x00x00nameqx01Xx06x00x00x00xe5xb0x8fx
pickle反序列化
loads_func_sum_pickle_dumps = pickle.loads(func_sum_pickle_dumps)
print(loads_func_sum_pickle_dumps) # <function sum at 0x00000000027E01E0>返回的是函数sum的内存地址
print(loads_func_sum_pickle_dumps(1, 2)) # 3
pickle文件序列化
# f = open('pickle序列化', 'wb') # 注意pickle要用二进制方式写入,不要指定编码格式
# pickle.dump(dict_msg, f)
# f.close()
pickle文件反序列化
# f = open('pickle序列化', 'rb')
# # dict_pick_load = pickle.load(f)
# # print(dict_pick_load) # {'name': '小小', 'age': 18, 'adress': '北京市通州区幸福大街'}
# # print(type(dict_pick_load)) #<class 'dict'>
# # f.close()