一、json序列化模块
1、序列化:将内存数据转成字符串加以保存。
2、反序列化:将字符串转成内存数据加以读取。
data = { '北京':{
'五道口':{
'sohu':'引擎',
}
}
}
# dumps <--> loads
'''
只是把数据类型转成字符串存到内存(json.dumps,json.loads)里的意义?
1、把你的内存数据通过网络远程共享给其他人
2、定义了不同语言之间的交互规则
<1> 纯文本:不能共享复杂的数据类型
<2> xml:占空间大
<3> json:简单,可读性好
'''
d = json.dumps(data) # 仅转成字符串 <class 'str'>
print(d,type(d)) # {"u5317u4eac": {"u4e94u9053u53e3": {"sohu": "u5f15u64ce"}}}
d_1 = json.loads(d) # 将字符串转成原本的数据类型 <class 'dict'>
print(d_1,type(d_1)) # {'北京': {'五道口': {'sohu': '引擎'}}}
# dump <--> load
f = open('test.json','w') # 先打开再读写
d2 = json.dump(data,f) # 转成字符串并写入文件
f1 = open('test.json','r')
d_2 = json.load(f1) # 将文件转成原来的数据类型
print(d_2) # {'北京': {'五道口': {'sohu': '引擎'}}}
二、pickle序列化模块
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
# write by congcong
import pickle
dict = {'name':'cc','age':21}
len = ['python','hello','world']
# dumps <--> loads
d = pickle.dumps(dict) # 字符串转成bytes类型
print(d) # b'x80x03}qx00(Xx04x00x00x00nameqx01Xx02x00x00x00ccqx02Xx03x00x00x00ageqx03Kx15u.'
d_1 = pickle.loads(d) # bytes类型转为原数据类型
# print(d_1) # {'name': 'cc', 'age': 21}
# dump <--> load
# pk = open('data.pkl','wb')
# d2 = pickle.dump(dict,pk) # 字符串转成bytes类型,并保存到硬盘
pk_r = open('data.pkl','rb') # 将硬盘里的bytes类型转为原数据类型
d_2 = pickle.load(pk_r)
print(d_2) # {'name': 'cc', 'age': 21}
'''
json 和 pickle 的区别:
json 支持的数据类型 str ,int ,tuple , list , dict ,可跨语言
pickle 支持python里所有的数据类型,但只能在python中使用
'''