1. 概念

    序列化:
    将对象的状态信息转换为可以存储或传输的形式的过程。就是把对象转换成字符串的过程 反序列化:
    把字符串转换成python可以识别的数据类型对象的过程
  2. 应用
    #数据存储
    
    #网络传输
  3. 模块
    1. json

      #通用的序列化格式
      #只有少部分数据类型能通过json转换(数字,字符串,列表,字典,元组)
      #写文件的操作时,如果找不到ascii码的格式,就会自动转成bytes,所以要添加ensure_ascii=False的参数
      #能多次写,但不能多次读
      import json dic = {'k1','v1'} #在内存中操作
      #序列化
      str_d = json.dumps(dic)
      #反序列化
      dic_d = json.loads(str_d) #直接对文件操作
      #序列化
      f = open('file','w')
      json.dump(dic,f)
      #反序列化
      f = open('file')
      ret = json.load(f) #如果要读写多行,用对文件的每次读一行,和写的时候添加\n进行处理
      #写
      l = [dic1,dic2,dic3]
      f = open('file','w')
      for dic in l:
      str_d = json.dumps(dic)
      f.write(str_d+'\n')
      f.close() #写
      f = open('file')
      l = []
      for line in f:
      dic = json.loads(line.strip())
      l.append(dic)
      f.close()
    2. pickle
      #支持对所有python类型的处理
      #使用pickle的读写文件的操作时,是以bytes形式的,所以open要用加b的模式 dic = {'k1':'v1', 'k2',:'v2'} #在内存中操作
      #序列化
      str_d = pickle.dumps(dic)
      #反序列化
      dic_d = pickle.loads(str_d) #对文件的操作
      #序列化
      f = open('file','wb')
      pickle.dump(dic,f)
      #反序列化
      f = open('file','rb')
      dic_d = pickle.load(f) #pickle直接支持多次读写
    3. shelve
      #一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
      
      import shelve
      
      #序列化
      f = shelve.open('file')
      f['key'] = {'k1':'v1', 'k2':'v2'}
      f.close() #反序列化
      f = shelve.open('file')
      ret = f['key'] #如果key不存在会报错
      f.close() #如果我们对序列化文件的内容进行修改,比如下面的操作,不会被保存,需要令writeback=True。但这方法会增加额外的内存消耗
      f = shelve.open('file')
      f['key']['k1'] = 'hahaha'  #没有被保存
      #需要这么写
      f = shelve.open('file',writeback=True)
      f['key']['k1'] = 'hahaha'  

python 序列化和反序列化的更多相关文章

  1. Python序列化和反序列化

    Python序列化和反序列化 通过将对象序列化可以将其存储在变量或者文件中,可以保存当时对象的状态,实现其生命周期的延长.并且需要时可以再次将这个对象读取出来.Python中有几个常用模块可实现这一功 ...

  2. python序列化与反序列化(json与pickle)

    在python中,序列化可以理解为将python中对象的编码格式转换为json(pickle)格式的字符串,而反序列化可以 理解为将json(pickle)格式的字符串转换为python中对象的编码格 ...

  3. Python—序列化和反序列化模块(json、pickle和shelve)

    什么是序列化 我们把对象(或者变量)从内存中变为可存储或者可传输的过程称为序列化.在python中为pickling,在其他语言中也被称之为serialization,marshalling,flat ...

  4. Python 序列化与反序列化

    序列化是为了将内存中的字典.列表.集合以及各种对象,保存到一个文件中(字节流).而反序列化是将字节流转化回原始的对象的一个过程. json库 序列化:json.dumps() 反序列化:json.lo ...

  5. python序列化与反序列化(json、pickle)-(五)

    1.什么是序列化&反序列化? 序列化:将字典.列表.类的实例对象等内容转换成一个字符串的过程. 反序列化:将一个字符串转换成字典.列表.类的实例对象等内容的过程 PS:Python中常见的数据 ...

  6. python 序列化,反序列化

    附: pickle 有大量的配置选项和一些棘手的问题.对于最常见的使用场景,你不需要去担心这个,是如果你要在一个重要的程序中使用pickle 去做序列化的话,最好去查阅一下官方文档. https:// ...

  7. Python序列化与反序列化-json与pickle

    Python序列化与反序列化-json与pickle 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.json的序列化方式与反序列化方式 1>.json序列化 #!/usr ...

  8. Python序列化和反序列化vsJSON

    # -*- coding: utf-8 -* """没有嵌套类的类 author: Jill usage: """ import json ...

  9. Python库:序列化和反序列化模块pickle介绍

    1 前言 在“通过简单示例来理解什么是机器学习”这篇文章里提到了pickle库的使用,本文来做进一步的阐述. 通过简单示例来理解什么是机器学习 pickle是python语言的一个标准模块,安装pyt ...

随机推荐

  1. nodejs+express搭建服务器

    1.Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速地搭建一个完整功能 ...

  2. IOS - ImagePicker 连拍

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)sel ...

  3. pythone 学习笔记(粗略)

    文档目录 概述 安装 基本语法 数据结构 4.1 数字和字符串类型 4.2 元祖 4.3 列表 4.4 字典 流程语句 5.1 分支结构 5.2 逻辑运算符(if) 5.3 循环 5.3.1 for ...

  4. 安装laravel项目出错

    我的本地是7.0.1,而下载下来的原来是运行在7.0.8版本的,于是执行:composer install 时,报了一堆错.解决办法:删掉composer.lock,重新composer instal ...

  5. jQuery 简单介绍

    jQuery  简单介绍 jQuery的定义 jQuery是一个快速,小巧,功能丰富的JavaScript库.它通过易于使用的API在大量浏览器中运行,使得   HTML文档遍历和操作,事件处理,动画 ...

  6. 洛谷 P1617 爱与愁的一千个伤心的理由

    P1617 爱与愁的一千个伤心的理由 题目背景 (本道题目隐藏了两首歌名,找找看哪~~~) <爱与愁的故事第一弹·heartache>第二章. 经历了心痛后,爱与愁大神不行了. 题目描述 ...

  7. pat(A) 1066. Root of AVL Tree

    代码: #include<iostream> #include<cstdio> #include<cmath> #include<stdlib.h> # ...

  8. 具体解释XML解析(一)—解析接口浅析

    在DRP项目中接触到了一个XML解析工具DOM4J,它作为解析工具的据说性能很优秀.可是刚刚接触解析工具不久,而且也没有使用过其它的解析工具.因此对于DOM4J的性能没有直接的感受(没有參照物).只是 ...

  9. matplotlib 可视化 —— matplotlib.patches

    官方帮助文档 patches - Matplotlib 1.5.1 documentation patches 下主要包含的常用图形类有: Eclipse Circle Wedge 1. plt.gc ...

  10. Vmware Workstation及Centos6.8 的安装

    转自:http://www.mamicode.com/info-detail-1462939.html 一.什么是Vmware Workstation Vmware Workstation是Vmwar ...