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. NPOI 导入为table 处理excel 格式问题

    ICell cell = row.GetCell(j); if (!cell.isDbNullOrNull()) { switch (cell.CellType) { case CellType.Bl ...

  2. redis应用实践

    晚些时候自己总结,先贴出看到的一篇文章. https://www.cnblogs.com/NiceCui/p/7794659.html

  3. JVM 字节码(四)静态方法、构造代码、this 以及 synchronized 关键字

    JVM 字节码(四)静态方法.构造代码.this 以及 synchronized 关键字 一.静态代码 public class ByteCodeStatic { private static fin ...

  4. Hadoop 系列(三)Java API

    Hadoop 系列(三)Java API <dependency> <groupId>org.apache.hadoop</groupId> <artifac ...

  5. 20170805_Elasticsearch_简介和安装

    官网地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html Elk 是一个可高 ...

  6. oracle 区分大小写遇到的坑

    1. oracle 字段是区分大小写的 ..在navicat 中使用查询 select REMAIN_PRINCIPAl from T_NF_PROJECT;    navicat 默认会把 REMA ...

  7. 如何查出sqlserver 性能瓶颈

    转载地址:https://www.cnblogs.com/yanwenbink05/p/4047374.html

  8. SQL学习(一.索引)

    数据库索引 作用: 提高查询速度 确保数据的唯一性 可以加速表和表之间的连接,实现表和表之间的参照完整性 使用分组和排序子句进行数据检索时,可以减少分组和排序的时间 全文检索字段进行搜素优化 分类: ...

  9. 你会跟谁结婚zz

    正文 咱们日课去年有篇文章叫<你会跟谁结婚?>,提到经济学家的数据显示,现在美国的婚姻中“强强联合”的现象越来越严重,高收入者和高收入者结婚,高学历者和高学历者结婚. 经济学家很无奈,我们 ...

  10. javascript常见内存泄露

    一.全局变量引起的内存泄漏 function func(){ lmw = 123456 //lmw是全局变量,不会被释放 } 二.闭包引起的内存泄漏 function func(){ var lmw ...