Python3 json、pickle序列化与反序列化
注意:可以dumps多次,loads只能一次,一般我们只dumps一次,loads一次,多个版本就写入多个文件
一、json序列化与反序列化:
支持各种语言数据交互,但只能处理字典,列表,集合等简单的数据类型
1.json序列化dump
1
2
3
4
5
6
7
8
|
import json info = { "name" : "bert" , "age" : 25 } # json 序列化 write_f = open ( 'text' , 'w' ,encoding = 'utf-8' ) json.dump(info,write_f) # 相当于 write_f.write(json.dumps(info)) |
2.json 反序列化 load
1
2
3
4
|
# json 反序列化 read_f = open ( 'text' , 'r' ,encoding = 'utf-8' ) data = json.load(read_f) #相当于 data = json.loads(read_f.read()) print (data[ "name" ]) |
二、pickle序列化与反序列化:
pickle 是Python专有的不支持其他语言, 但它可以序列化python所有数据,但只能用二进制格式
1.pickle 序列化 dump
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import pickle def func(name): print (name) info = { "name" : "bert" , "age" : 25 , "func" :func } #pickle 序列化 write_f = open ( "text" , "wb" ) pickle.dump(info,write_f) #相当于 write_f.write(pickle.dumps(info)) |
2.pickle 反序列化 load
1
2
3
4
|
#pickle 反序列化 read_f = open ( "text" , "rb" ) data = pickle.load(read_f) #相当于 data = pickle.loads(read_f.read()) data[ "func" ]( "张三" ) |