# json : dumps() / loads()
# dumps() --- 序列化方法 数据类型到字符串的过程
str_d = json.dumps(dic)
print(type(str_d),str_d) # 打印结果:<class 'str'> {"k1": "v1"}
# loads() --- 反序列化方法 字符串到数据类型过程
dic_d = json.loads(str_d)
print(type(dic_d),dic_d) # 打印结果:<class 'dict'> {'k1': 'v1'}
# json : dump() / load()
# dump() --- 在文件中写数据
dic1 = {1:'a',2:'b'}
f = open('q','w',encoding='utf-8')
json.dump(dic1,f)
f.close()
# load() --- 读文件,不能load 多次
f1 = open('q')
res = json.load(f1)
f1.close()
print(type(res),res) # 打印结果:<class 'dict'> {'1': 'a', '2': 'b'}
# pickle : dumps() / loads()
# 可以序列化任何数据类型
# 当pickle 和文件数据类型时,文件要加 'b' ('rb','wb)
# 支持python 所有的数据类型
dic = {'k1':'v1','k2':'v2'}
str_dic = pickle.dumps(dic)
print(str_dic) # 打印的是 二进制
dic2 = pickle.loads(str_dic)
print(dic2) # 打印结果:{'k1': 'v1', 'k2': 'v2'}
import time
struct_time1 = time.localtime(1000000000)
struct_time2 = time.localtime(2000000000)
f = open('pickle_file','wb')
pickle.dump(struct_time1,f)
pickle.dump(struct_time2,f)
f.close()
f = open('pickle_file','rb')
struct_time1 = pickle.load(f)
struct_time2 = pickle.load(f)
print(struct_time1.tm_year) # 2001
print(struct_time2.tm_year) # 2033
f.close()
# shelve : open()
# 将数据类型直接写在文件中
import shelve
f = shelve.open('shelve_file')
f['key'] = {'int':10,'float':23.2,'str':'asd'}
f.close()
f1 = shelve.open('shelve_file')
existing = f1['key']
f1.close()
print(existing) # 打印结果:{'int': 10, 'float': 23.2, 'str': 'asd'}