#json序列化,只能处理简单的数据类型,如:字典、列表、字符串,类和函数等数据类型过于复杂,不支持序列化
import json def sayhi(name):
print('hello,', name) info = {
'name': 'whitesky',
'age': 25,
'func': sayhi
} f = open('test.txt', 'w')
# f.write(str(info))
f.write(json.dumps(info))
f.close() #json反序列化 f = open('test.txt', 'r')
data = json.loads(f.read())
print(data['func']) #处理复杂数据类型(函数等)的方法:pickle(只支持python,不支持Java(支持json))
import pickle def sayhi(name):
print('hello,', name)
info = {
'name': 'whitesky',
'age': 25,
'func': sayhi
} f = open('test.txt', 'wb') #pickle序列化要带b
f.write(pickle.dumps(info)) #相当于 pickle._dump(info,f) #pickle反序列化 f = open('test.txt', 'rb')
data = pickle.loads(f.read()) # 相当于 pickle.load(f) print(data['func']) f.close() #注意:写程序序列化时要记住只dump一次,只load一次(py3中dump多次,再load时会出错,py2中正常),如果需要存储多个状态,就dump成多个文件
05-11 20:54