您的位置:首页 > 编程语言 > Python开发

python pickle模块学习

2014-10-27 16:02 399 查看
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 :很多的反序列化方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: