python--json与pickle序列化

json & pickle 模块

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

#json只能处理简单的数据类型 可以和其它语言进行交互
#json不同平台数据处理进行交互
#用json实现存入数据和读取数据
#序列化 存入数据
info = {
    'name':'python',
    'age':30
}
import json
f = open("test",'w')
# f.write(str(info)) #str变为字符串
f.write(json.dumps(info))

#反序列化 读取数据
import json
f = open("test",'r')
data = json.loads(f.read())
print(data["age"])

#pickle 处理复杂的 可以序列化所有的数据类型
#序列化
import pickle
def saihi(name):
    print("hello",name)
info = {
    'name':'python',
    'age':30,
    'func':saihi
}
f = open("test",'wb')
# f.write(str(info)) #str变为字符串
f.write(pickle.dumps(info))
#反序列化
import pickle
def saihi(name):
    print("hello",name)
    print("hello1",name)
f = open("test",'rb')
data = pickle.loads(f.read())
print(data["func"]("python"))

#pickle 中dump 同dumps实现效果一样 
import pickle
def saihi(name):
    print("hello",name)
info = {
    'name':'python',
    'age':30,
    'func':saihi
}
f = open("test",'wb')
pickle.dump(info,f)
f.close()

#pickle中load
import pickle
def saihi(name):
    print("hello",name)
    print("hello1",name)
f = open("test",'rb')
data = pickle.load(f)

#序列化 用json dump两次
import json
info = {
    'name':'python',
    'age':30,
}
f = open("test",'w')
f.write(json.dumps(info))
info['age'] = 22
f.write(json.dumps(info))
f.close()

#注:只dump一次load一次 如虚拟机中快照 

猜你喜欢

转载自www.cnblogs.com/wangzihong/p/9142394.html