使用python内置的cPickle模块可以很方便地将python对象序列化为二进制流并存储到文件或数据库中。在需要使用这个对象时,我们可以反序列化获取原对象。本文将为大家详细讲解如何使用cPickle模块序列化实例。
1. cPickle模块序列化实例
1.1 序列化实例
在Python中,我们可以使用cPickle模块对一个类的实例进行序列化,其底层其实是对对象进行打包和解包操作。这里我们以序列化一个Person类的实例为例。
下面是一个示例代码:
import cPickle as pickle
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return 'Person(name: %s, age: %d)' % (self.name, self.age)
person = Person('Lucas', 25)
with open('person.pkl', 'wb') as f:
pickle.dump(person, f)
在上面的示例代码中,我们首先定义了一个Person类,并创建一个person对象。然后使用pickle.dump函数将person对象序列化并保存到文件person.pkl中。由于以二进制形式进行序列化,因此应该以wb方式打开文件。
1.2 反序列化实例
反序列化与序列化相反,把二进制数据转化为原对象。在Python中,使用cPickle.load方法可以将序列化后的数据恢复成原始的python对象。下面是一个示例代码:
import cPickle as pickle
with open('person.pkl', 'rb') as f:
person = pickle.load(f)
print person
在上面的示例代码中,我们首先以二进制方式打开之前保存的person.pkl文件,然后使用pickle.load方法加载数据并返回原对象person。
2. 序列化多个实例
如果需要序列化多个实例,需要将它们放入一个列表中,然后将此列表序列化后保存到文件中。下面是一个示例代码:
import cPickle as pickle
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return 'Person(name: %s, age: %d)' % (self.name, self.age)
persons = [Person('Lucas', 25), Person('Tom', 30)]
with open('persons.pkl', 'wb') as f:
pickle.dump(persons, f)
在上面的示例代码中,我们首先定义了一个Person类,并创建了两个person对象。然后将这两个对象放入一个列表中,并使用pickle.dump函数将列表序列化并保存到文件persons.pkl中。
结语
本文主要分享了使用cPickle模块序列化实例的攻略,包括单个实例和多个实例的序列化示例代码。希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python使用cPickle模块序列化实例 - Python技术站