[笔记]python pickle模块

什么叫序列化

把变量存储到磁盘的过程叫序列化,英语中也叫:pickling, serialization, marshalling, fastening。

反之,把磁盘中的变量内容读到内存中就是反序列化,又叫unpickle,名词是unpickling.

在Python中,有两个模块cPickle和pickle可以用来序列化。只不过,cPickle是用C语言写的,比较快。而pickle,是用python语言写的。

在导入过程中,常常先尝试导入cPickle模块,如果不行,才导入pickle模块。

try:
    import cPickle as pickle
except ImportError:
    import pickle

序列化:将一个python对象写入文件中

比如下面的字典对象。

>>> d = dict(name=’Bob’,age=20,score=88)

>>> pickle.dumps(d)

“(dp1\nS’age’\np2\nI20\nsS’score’\np3\nI88\nsS’name’\np4\nS’Bob’\np5\ns.”

dumps()方法返回的是一个字符串,这样可以把字符串写入文件中。

dump(pyObject, fileObject)方法则直接将对象序列化后写入文件中。

>>> f = open(‘dump.txt’, ‘wb’)

>>> pickle.dump(d, f)

这时当前目录下已经有一个文件dump.txt,但是你打开一看发现啥都没

有,这是因为你忘记了关闭文件,这是文件还是打开写入状态,它正等待

你的其他写入命令,直到你关闭它。

>>> f.close()

这时你看就会有写入的字符串了。

反序列化

要把dump.txt的信息读入内存中应该怎么·做呢?

方法一:读入文件到内存,成为字符串对象,对字符串对象使用pickle.loads(aStr)

>>> f = open(“dump.txt”,’rb’)

>>> xx = f.read()

>>> dd = pickle.loads(xx)

>>> dd

{‘age’: 20, ‘score’: 88, ‘name’: ‘Bob’}

>>>f.closed()

方法二:利用pickle.load(file)直接作用于文件对象,之后不要忘记关闭文件。

>>> f = open(“dump.txt”,’rb’)

>>> di = pickle.load(f)

>>> di

{‘age’: 20, ‘score’: 88, ‘name’: ‘Bob’}

>>> f.close()

注意:反序列化产生的对象虽然内容和源对象一样,但是它们并不是一个对象。pickle只能适用于python,并且可能不同版本的python都不兼容,因此只能用pickle保存不重要的数据。

时间: 2024-11-19 20:25:15

[笔记]python pickle模块的相关文章

[转]python pickle模块

持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识.另外,还会让您更深一步地了解Python 的对象序列化能力. 什么是持久性? 持久性的基本思想很简单.假定有一个 Python 程序,它可能是一个管理日常待办事项的程序,您希望在多次执行这个程序之间可以保存应用程序对象(待办事项).换句话说,您希望将对象存储在磁盘上,便于以后检索.这就是持久性.要达到这个目的,

python——pickle模块的详解

pickle模块详解 该pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议. “Pickling”是将Python对象层次结构转换为字节流的过程, “unpickling”是反向操作,从而将字节流(来自二进制文件或类似字节的对象)转换回对象层次结构.pickle模块对于错误或恶意构造的数据是不安全的. pickle协议和JSON(JavaScript Object Notation)的区别 : 1. JSON是一种文本序列化格式(它输出unicode文本,虽然大部分时间它

python pickle 模块的使用

pickle模块是能够让我们直接在文件中存储几乎任何Python对象的高级工具,并不要求我们把字符串转换来转换去,像是个超级通用的数据格式化和解析工具.想要在文件中储存字典,就直接用pickle来储存. >>>D = {'a': 1, 'b':2} >>>F = open('datafile.pkl', 'wb') >>>import pickle >>>pickle.dump(obj=D, file=F, protocol=None

python pickle 模块

为了更好的阅读,请查看我的笔记 文档:pickle模块.note链接:http://note.youdao.com/noteshare?id=cfe69f23f518f22d72e4190bc9245e65&sub=92E32B662AC44847BD7F04B850D53866 1.pickle.dump(obj, file, protocol=None, *, fix_imports=True, buffer_callback=None) 将对象 obj 封存以后的对象写入已打开的 file

Python pickle模块

pickle模块中主要有dumps()函数.loads()函数.dump() 函数.load() 函数. #pickle.dumps('object') #序列化对象,返回值不可直接读#pickle.dump('object', f) #序列化对象到文件中#pickle.loads('object') #反序列化对象#pickle.load( f) #从文件中反序列对象,返回原先的object import pickle obj = 123,"abcdedf",["ac&qu

Python学习笔记- Python threading模块

Python threading模块 直接调用 # !/usr/bin/env python # -*- coding:utf-8 -*- import threading import time def sayhi(num): print("running on number:%s" % num) time.sleep(3) if __name__ =='__main__': #生成两个线程实例 t1 = threading.Thread(target=sayhi,args=(1,)

python模块 - pickle模块

http://blog.csdn.net/pipisorry python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象. 基本接口: pickle.dump(obj, file, [,protocol]) 注解:将对象obj保存到文件file中去. protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可

Python cPickle模块

新博客地址:http://gorthon.sinaapp.com/ 持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识.另外,还会让您更深一步地了解Python 的对象序列化能力. 什么是持久性? 持久性的基本思想很简单.假定有一个 Python 程序,它可能是一个管理日常待办事项的程序,您希望在多次执行这个程序之间可以保存应用程序对象(待办事项).换句话说,您

Python学习笔记——基础篇【第五周】——json & pickle 模块

json & pickle 模块(序列化) 用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps.dump.loads.load pickle模块提供了四个功能:dumps.dump.loads.load dumps和dump区别: pickle.dump(info,f) #print(pickle.dumps(info)) #f.write(pick