Pickle和JSON的序列化

Python的pickle模块允许我们把对象只节存储成一个特殊的存储格式,它本质上是把一个对象转换成一种可以存储到文件或者类文件对象或者一个字节字符串的格式;

>>> import pickle
>>> list1=[1,2,3,4,5]
>>> f=open('text.txt','w')
>>> f.write(list1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: expected a character buffer object 此时不能把list1写入文件,
>>> f=open('text.txt','w')
>>> pickle.dump(list1,f)
>>>

Dump方法接收一个被写入的对象以及一个要写入序列化的类文件对象作为参数,这个对象必须有一个write方法,并且这个方法必须知道如何处理一个bytes参数(所以为一个文件输出而打开的文件将无法工作)

>>> with open('text.txt','r') as file:
... data=pickle.load(file)
... print data
...
[1, 2, 3, 4, 5]

Load方法它是从一个类文件的对象里读取序列化的对象,这个对象必须有合适的类文件read以及readline参数。

JSON序列化

Pickle的另一个缺点就是它只能被其他的python程序加载,不能很容易的和其他系统共享,

JSON是一个特殊的用于原始数据交换的格式,因为javascipt引擎河南容易解析JSON结构,所以它常用于把从web服务器的数据传输到一个支持javascipts的浏览器,如果提供数据的web应用程序是用python写的,那么它需要一种方法来把内部数据格式转换成JSON格式

如果我们想要序列化的对象只是数据的话,可以序列化对象的__dict__属性,

>>> class Contact:
... def __init__(self,first,last):
... self.first=first
... self.last=last
... @property
... def full_name(self):
... return ("{} {}".format(self.first,self.last)) 我们只序列化__dict__
>>> import json
>>> json.dumps(c.__dict__)
'{"last": "kk", "first": "ll"}'

pickle和JSON的序列化的更多相关文章

  1. Python开发之序列化与反序列化:pickle、json模块使用详解

    1 引言 在日常开发中,所有的对象都是存储在内存当中,尤其是像python这样的坚持一切接对象的高级程序设计语言,一旦关机,在写在内存中的数据都将不复存在.另一方面,存储在内存够中的对象由于编程语言. ...

  2. python全栈开发-json和pickle模块(数据的序列化)

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

  3. 序列化和反序列化(json 和pickle)dumps 为序列化, json为反序列化

    json 可以在不同语言中进行使用 下面先介绍一下json的适用方法 import json, pickle t1 = { 'name':'alex', ', ' } t1 = json.dumps( ...

  4. python 序列化 pickle shelve json configparser

    1. 什么是序列化 我们把变量从内存中变成可存储或传输的过程称之为序列化. 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. 反过来,把变量内容从序列化的对象重新读到内存里称 ...

  5. Python学习笔记:json模块和pickle模块(数据序列化)

    Python中的json模块和pickle都是用于数据的序列化和反序列化,它们提供的方法也是一样的:dumps,dump,loads,load dumps(obj):将对象序列化为str. dump( ...

  6. Python序列化模块pickle和json使用和区别

    这是用于序列化的两个模块: • json: 用于字符串和python数据类型间进行转换 • pickle: 用于python特有的类型和python的数据类型间进行转换 Json模块提供了四个功能:d ...

  7. Python 常用模块(2) 序列化(pickle,shelve,json,configpaser)

    主要内容: 一. 序列化概述 二. pickle模块 三. shelve模块 四. json模块(重点!) 五. configpaser模块 一. 序列化概述1. 序列化: 将字典,列表等内容转换成一 ...

  8. python使用pickle,json等序列化dict

    import pickle, json, csv, os, shutil class PersistentDict(dict): ''' Persistent dictionary with an A ...

  9. python pickle和json的区别

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

随机推荐

  1. 计算机组成原理 — CPU 中央处理器

    目录 文章目录 目录 前文列表 逻辑电路部件 组合逻辑电路 时序逻辑电路 阵列逻辑电路 中央处理器(CPU) 控制单元(控制器) 运算单元(运算器) 存储单元(寄存器组和片内缓存) CPU 的工作原理 ...

  2. python3将汉字转换为大写拼音首字母

    利用pypinyin包 实现 import pypinyin a = pypinyin.pinyin('你好世界', style=pypinyin.FIRST_LETTER) b = [] for i ...

  3. 模拟SQLserver IO压力测试 工具编 SQLIOSIM

    描述 最近有业务需求需了解客户的服务器SQLserver 的IO情况,而不仅仅是通过系统计数器 了解硬盘的IO情况或者使用CrystalDiskMark或者Trace重播进行压力测试 .这时SQL S ...

  4. class文件访问标志

    class文件中用两个字节共16位代表访问标志(access flags),用于表明该类或接口被访问时能提供的一些信息: 标志名称 标志值 含义 ACC_PUBLIC 0x00 01 是否为Publi ...

  5. cryptopp 加密库的安装

    今天 在搭建环境的过程中遇到一个问题:C++ 的加密库 crypto在新系统中没有安装,于是百度一下,顺便解决问题 1.开源包下载 下载地址:https://www.cryptopp.com/#dow ...

  6. C#实现多线程的方式:使用Parallel类

    简介 在C#中实现多线程的另一个方式是使用Parallel类.  在.NET4中 ,另一个新增的抽象线程是Parallel类 .这个类定义了并行的for和foreach的 静态方法.在为 for和 f ...

  7. Xshell的使用以及常用命令

    工具/原料 Xshell 方法/步骤 打开软件,点击新建,在主机哪里写入要访问的ip地址,名称随意 点击文件之后,再点击打开: 就可以看到刚才新建的会话了: 点击连接,就会显示下面的画面,输入用户名, ...

  8. jmeter性能测试总结

    一.性能测试问题记录: Ⅰ.秒杀的失败率了在96.45%,原因 Query对于 活动的秒杀采用的是0.5秒,刷新缓存的策略在活动中优惠券被秒杀一空 下架前,短暂的时间内仍能够查询到 这个活动架构中采用 ...

  9. 显示 隐藏 加减css

    < script type = "text/javascript" > $(document).ready(function() { $("#hide1&qu ...

  10. query函数的可查询数据

    #encoding: utf-8 from sqlalchemy import create_engine,Column,Integer,String,Float,func from sqlalche ...