python 提供了pickle模块,能将对象进行序列化,将对象以文件形式存放在磁盘。

几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化。但是序列化后的数据可读性很差。

pickle最主要的两个函数:

pickle.dump(obj, file[, protocol])    # 序列化对象,并将结果数据流写入到文件对象中。

                # 参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。

pickle.load(file)        # 反序列化对象。将文件中的数据解析为一个Python对象。

               # 每取一次对象,就要load一次

dump() 和 pickle() 成对存在

其中要注意的是,在load(file)的时候,要让python能够找到类的定义,否则会报错

例子如下:

 import pickle

 info_1 = {'admin': 'admin'}
info_2 = {'user': 'user'} with open('test.txt', 'wb') as urs_file:
pickle.dump(info_1, urs_file)
pickle.dump(info_2, urs_file) with open('test.txt', 'rb') as urs_file:
while True:
try:
admin = pickle.load(urs_file)
print(admin)
except EOFError:
break

运行结果:

{'admin': 'admin'}
{'user': 'user'}

  

对python pickle的理解的更多相关文章

  1. [转]python pickle模块

    持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识.另外,还会让 ...

  2. python pickle命令执行与marshal 任意代码执行

    1.python pickle反序列化漏洞 自己的理解: 由于在类的__reduce__方法中提供了我们可以自定义程序如何去解序列化的方法,因此如果应用程序接受了不可信任的序列化的数据,那么就可能导致 ...

  3. python pickle 序列化类

    python pickle 序列化类 # coding:utf-8 try: import cPickle as pickle except ImportError: import pickle cl ...

  4. python之总体理解

    作为脚本,python具备了弱类型语言的灵活性,便捷性.这在日常的开发使用中能够大幅度的减轻开发人员的编码负担,开发者也能够将精力集中在程序的逻辑管理和总体构架设计上.一般而言,随着经验的积累,开发人 ...

  5. Python的多线程理解,转自虫师https://www.cnblogs.com/fnng/p/3670789.html

    多线程和多进程是什么自行google补脑 对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用简单的例子,让你对多线程有个初步的认识. 单线程 在好些年前的 ...

  6. 对python变量的理解

    #!/usr/bin/python class Person: '''some words content or descriptions!''' name='luomingchuan' _age = ...

  7. python描述符理解

    Python中的描述符是一个相对底层的概念 descriptor Any object which defines the methods get(), set(), or delete(). Whe ...

  8. python pickle和json的区别

    pickle可以在python之间进行交互 json可以实现python与不同开发语言的交互 pickle可以序列化python中的任何数据类型 json只能序列化python中的常归数据类型(列表等 ...

  9. 用python pickle库来存储数据对象

    pickling有一个更常用的叫法是serialization,它是指把python对象转化成字节流byte stream, unpickling就是把byte stream转换成对象.python的 ...

随机推荐

  1. Linux驱动之poll机制的理解与简单使用

    之前在Linux驱动之按键驱动编写(中断方式)中编写的驱动程序,如果没有按键按下.read函数是永远没有返回值的,现在想要做到即使没有按键按下,在一定时间之后也会有返回值.要做到这种功能,可以使用po ...

  2. NC 自定义参照类

    package nc.ui.hzctr.costctr.ref; import nc.ui.bd.ref.AbstractRefModel; import nc.vo.pubapp.pattern.p ...

  3. Python:每日一题005

    题目: 输入三个整数x,y,z,请把这三个数由小到大输出. 程序分析: 我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x> ...

  4. Apache Beam是什么?

    Apache Beam 的前世今生 1月10日,Apache软件基金会宣布,Apache Beam成功孵化,成为该基金会的一个新的顶级项目,基于Apache V2许可证开源. 2003年,谷歌发布了著 ...

  5. Could not transfer artifact org.springframework

    无法从中心仓库获取该版本的信息, 从新下载: 1.配置eclipse中的maven  user setting路径为本地maven安装路径 配置阿里云镜像路径 <mirror> <i ...

  6. MongoDB学习记录(一) - 安装、启动与建立数据库

    简要说明一个基本概念:MongoDB中的三要素:数据库(database).集合(collection)和文档(document). 文档:类似于JSON对象,由字段(field)和值(value)组 ...

  7. delete,truncate ,drop区别

    use [database_name]go delete from table_nameTest  where FCRTime<(Select CONVERT(varchar(100),DATE ...

  8. Number of subarrays having sum exactly equal to k(explanation for 437. Path Sum III of leetcode)

    https://www.geeksforgeeks.org/number-subarrays-sum-exactly-equal-k/ 讲解的详细 看这道题是为了解决https://leetcode. ...

  9. 通过MFC设计一个简单的计价程序

    1.实验目的 掌握使用MFC应用程序向导创建应用程序的方法. 掌握新建对话框资源的方法. 掌握生成对话框的方法. 2.实验内容 用应用程序创建一个默认的对话框应用程序,在对话框中能进入下一个对话框,在 ...

  10. 机器学习之KNN算法

    1 KNN算法 1.1 KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属 ...