ruanchao

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

序列化的使用场景:

1)进程A创建了对象,需要分发给另一个进程B,让B协助完成工作。 A就需要把对象序列化成文件,然后B可以读取。 

2)状态保存。将中间结果序列化,以后可以直接使用,不用每次都重新计算生成,即Save/Load。

 

pickle是python的一个序列化工具。 注意:由于pickle可以序列化各种数据,包括代码,因此可以被代码注入,不安全。

 

通过pickle来序列化:

# -*- coding: utf-8 -*-
import pickle
#-------------------序列化---------------------
zoo_animals_1 = {
'Unicorn' : 'Cotton Candy House',
'Sloth' : 'Rainforest Exhibit',
'Bengal Tiger' : 'Jungle House',
'Atlantic Puffin' : 'Arctic Exhibit',
'Rockhopper Penguin' : 'Arctic Exhibit'}

zoo_animals_2 = {
'Unicorn 2' : 'Cotton Candy House',
'Sloth 2' : 'Rainforest Exhibit',
'Bengal Tiger 2' : 'Jungle House',
'Atlantic Puffin 2' : 'Arctic Exhibit',
'Rockhopper Penguin 2' : 'Arctic Exhibit'}

#序列化。如果有多个数据要序列化,可以汇总到一个字典里。
all_data = {'zoo1':zoo_animals_1, 'zoo2':zoo_animals_2}

pickle_file = open('list.pkl', 'wb')

pickle.dump(all_data, pickle_file, 0)
#pickle.dump(zoo_animals, administrator, 0)

pickle_file.close()

#-------------------反序列化---------------------
pickle_file = open('list.pkl', 'rb')

all_data = pickle.load(pickle_file)

pickle_file.close()

print all_data
print '---------------'
zoo_animals_3 = all_data['zoo1']
print zoo_animals_3['Unicorn']

 

posted on 2016-09-17 14:25  ruanchao  阅读(251)  评论(0编辑  收藏  举报