day5-json&pickle
一、json模块
1. dumps和loads
1 import json 2 3 info = { 4 'name':'ww', 5 'group':7 6 } 7 8 # 序列化 9 with open("test.txt","w") as f: 10 data = json.dumps(info) 11 f.write(data) 12 13 # 反序列化 14 with open("test.txt","r") as f: 15 data = json.loads(f.read()) 16 17 print info 18 19 >>> 20 {'group': 7, 'name': 'ww'}
2. dump和load
1 import json 2 3 info = { 4 'name':'ww', 5 'group':7 6 } 7 8 # 序列化 9 with open("test.txt","w") as f: 10 data = json.dump(info, f) 11 12 # 反序列化 13 with open("test.txt","r") as f: 14 data = json.load(f) 15 16 print info 17 18 >>> 19 {'group': 7, 'name': 'ww'}
小结:
1. dumps和loads是成对使用的,dump和load是成对使用的。
2. dumps和loads由于序列化的是内容,所以后面要加s,但是dump和load序列化的内容是对象,所以单数。
3. json只能处理简单的数据类型,例如:字典、列表、字符串等,不能处理函数等复杂的数据类型。
4. json是所有语言通用的,如果我们需要python跟其他语言进行数据交互,那么就用json格式。
二、pickle模块
1. dumps和loads
1 import pickle 2 3 info = { 4 'name':'ww', 5 'group':7 6 } 7 8 # 序列化 9 with open("test.txt","w") as f: 10 data = pickle.dumps(info) 11 f.write(data) 12 13 # 反序列化 14 with open("test.txt","r") as f: 15 data = pickle.loads(f.read()) 16 17 print info 18 19 >>> 20 {'group': 7, 'name': 'ww'}
2. dump和load
1 import pickle 2 3 info = { 4 'name':'ww', 5 'group':7 6 } 7 8 # 序列化 9 with open("test.txt","w") as f: 10 data = pickle.dump(info, f) 11 12 # 反序列化 13 with open("test.txt","r") as f: 14 data = pickle.load(f) 15 16 print info 17 18 >>> 19 {'group': 7, 'name': 'ww'}
3. 序列化函数
1 import pickle 2 3 def sayhi(name): 4 print "hello:",name 5 6 info = { 7 'name':'ww', 8 'group':7, 9 'func':sayhi 10 } 11 12 # 序列化 13 with open("test.txt","w") as f: 14 data = pickle.dumps(info) 15 f.write(data) 16 17 # 反序列化 18 with open("test.txt","r") as f: 19 data = pickle.loads(f.read()) 20 21 data.get("func")('ww') 22 23 >>> 24 hello: ww
小结:
1. json值支持简单的数据类型,pickle支持所有的数据类型。
2. pickle只能支持python本身的序列化和反序列化,不能和其他语言做数据交互。
3. pickle序列化的是整个的数据对象,如果反序列化函数时,函数体中的逻辑变了,会运行新函数体。
4. pickle和json在3.0中只能dump一次和load一次,在2.7里面可以dump多次,load多次,但是最好还是dump一次,load一次。

浙公网安备 33010602011771号