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一次。

posted @ 2017-06-17 23:00  不知所以  阅读(86)  评论(0)    收藏  举报