序列化的使用场景:
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']
--------------------------------
欢迎交流:ruanchao1982@163.com
--------------------------------