pickle模块的基本作用是将对象序列化后写入到文件中去,
(1)序列化
pickle.dump(obj[,file][,mode])
pickle.dumps(obj[,mode])
第二个命令只能序列化,不能写到文件中去,返回的是一个序列
如:
>>> b = "let's go"
>>> ret = pickle.dumps(b)
>>> ret
'S"let\'s go"\np0\n.'
>>>
>>> a = 5
>>> ret = pickle.dumps(a)
>>> ret
'I5\n.'
(2)反序列化
pickle.load(file)
pickle.loads(str)
load是直接从文件从反序列化,而loads是从字符串从反序列化
如:
# -*- coding: utf-8 -*-”
'''
execfile(r'E:/py_code/py_pickle/test1.py')
'''
import pickle, StringIO
#自定义类型。
class Person(object):
def __init__(self, name, address):
self.name = name
self.address = address
def display(self):
print 'name:', self.name, 'address:', self.address.decode('gbk').encode('utf-8')
jj = Person("JGood", "中国 杭州")
jj.display()
file = StringIO.StringIO()
pickle.dump(jj, file, 0) #序列化
#print file.getvalue() #打印序列化后的结果
#del Person #反序列的时候,必须能找到对应类的定义。否则反序列化操作失败。
file.seek(0)
jj1 = pickle.load(file) #反序列化
jj1.display()
file.close()
>>> b = "let's go"
>>> s1 = pickle.dumps(b)
>>> b1 = pickle.loads(s1)
>>> b1
"let's go"
>>>
(3)其他命令
pickle.Pickler(file) #是一个类,
其方法包含pickle常用的操作,如
dump:序列化
clear_memo:清空备忘
与之对应的是
pickle.Unpickler(file)
其方法有:
load:反序列化对象
load_xxxx :很多的反序列化方法