概念:
  序列化 -- 其他数据类型转换成一个字符串数据类型
  反序列化 -- 字符串转换成其他数据类型
  序列 -- 字符串
必须要转换成字符串的场景:
  往文件里面写数据的时候只能写字符串,不能写字典的
  网络传输的时候只能传bytes,字典也不能直接转换成bytes
可以用到的模块:
  json 非常重要的一个模块,非常非常
  通用的序列化格式,不仅仅是局限于python,优点就是很通用
  只有很少的一部分数据类型可以序列化,局限性比较大
  pickle 仅次于json
  所有的python的数据都可以序列化
  问题在于,pickle序列化的内容只有python可以理解
  而且,反序列化依赖代码本地存在,不存在则无法解析
  shelve python3 里面新加的,特点是好操作,但是实用性就一般
  有个序列化句柄,很方便使用读写直接操作
   新加的,存在一些小问题


json '{""}' json  
  可转:
    数字 字符串 列表 字典 元祖
  不可转:
    集合
  特殊改变:  
    会将字符串改成双引号,字典里面的单引号就会改成双
  元祖的序列化会被变成列表,本身是元祖的序列后再反序列化便不会来元祖就变成列表了
  直接写内存里面的操作
  序列化方法:dumps
  反序列化方法:loads
 import json
dic = {"k1":"v1"}
print(type(dic),dic) # <class 'dict'> {'k1': 'v1'}
strd = json.dumps(dic)
print(type(strd),strd) # <class 'str'> {"k1": "v1"}
dicd = json.loads(strd)
print(type(dicd),dicd) # <class 'dict'> {'k1': 'v1'}
  往文件里面写的操作
    一次性写进去一次性读出来
    要不每次写一行,每次读一行,不然会报错
 # dump 往文件里面写
import json
dic = {"k1":"v1"}
f = open("fff","w",encoding="utf-8")
json.dump(dic,f)
f.close() # load 从文件读
f = open("fff")
res = json.load(f)
f.close()
print(type(res),res)

pickle
  用法同jons,提供dump,load,dumps,loads方法
  但是pickle序列化后会变成tyles类型,无法看出来源内容但是不影响你其他操作
  因为是bytes类型,因此文件操作需要用wb,rb的类型进行操作
  pickle可以做任何任何数据类型,可以对集合进行序列化反序列化
  比jons还要有一点,他可以分别dump load的


 # shelve 只提供一个open方法,通过key可以写入或者获取到内容
import shelve
f = shelve.open("shelve_file")
f["key"] = {"int":10,"float":9.5,"string":"sda"}
f.close() import shelve
f1 = shelve.open("shelve_file")
exiting = f1["key"]
f1.close()
print(exiting) # writeback 不设置的话是没办法修改文件的
# 不设置无法感知到修改,但是设置这个会对运行造成一定的资源占用和影响
import shelve
f1 = shelve.open('shelve_file')
print(f1['key'])
f1['key']['new_value'] = 'this was not here before'
f1.close() f2 = shelve.open('shelve_file', writeback=True)
print(f2['key'])
f2['key']['new_value'] = 'this was not here before'
f2.close()
												

day23 序列化模块的更多相关文章

  1. day23 Pyhton学习 昨日回顾.re模块.序列化模块

    一.昨日回顾 #__file__查看当前文件所在的绝对路径 #time 时间模块 time.time 获取当前时间戳时间 字符串->time.strptime->结构化->mktim ...

  2. python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

  3. sys模块和序列化模块

    import sysprint(sys.version) #查看当前pycharm版本print(sys.path )#返回模块的搜索路径print(sys.platform )#返回操作系统的版本p ...

  4. day 20 - 1 序列化模块,模块的导入

    序列化模块 首先我们来看一个序列:'sdfs45sfsgerg4454287789sfsf&*0' 序列 —— 就是字符串序列化 —— 从数据类型 --> 字符串的过程反序列化 —— 从 ...

  5. python之序列化模块、双下方法(dict call new del len eq hash)和单例模式

    摘要:__new__ __del__ __call__ __len__ __eq__ __hash__ import json 序列化模块 import pickle 序列化模块 补充: 现在我们都应 ...

  6. 4-20模块 序列化模块 hashlib模块

    1,模块,py文件就是模块,py之所以好用就是模块多. 2,模块的分类: 1,内置模块,python 安装时自带的模块 2,扩展模块,别人写好的,需要安装之后,可以直接使用.itchat微信模块, b ...

  7. Python内置模块之序列化模块

    序列化模块 json dumps loads dump load pickle dumps loads dump load shelve json 1: dumps/loads import json ...

  8. 序列化模块— json模块,pickle模块,shelve模块

    json模块 pickle模块 shelve模块 序列化——将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. # 序列化模块 # 数据类型转化成字符串的过程就是序列化 # 为了方便存储和网 ...

  9. python 常用模块(一): os模块,序列化模块(json模块 pickle模块 )

    1.os模块 2.序列化模块:(1)json模块 和 pickle模块 一.os模块 os.path.abspath: (1)把路径中不符合规范的/改成操作系统默认的格式 import os path ...

随机推荐

  1. [JSOI2016]轻重路径[树链剖分]

    题意 题目链接 分析 先对原树树剖,在一次删点操作后从根节点开始二分,如果一条边从重边变成轻边,必然有 \(size_u\le \frac{1}{2}size_{rt}\) (取等号是特判对应儿子消失 ...

  2. JVM规范系列第5章:加载、链接与初始化

    加载是根据特定名称查找类或接口类型的二进制表示(Binary Representation),并由此二进制表示创建类或接口的过程. 加载,就是指去寻找类或接口的过程. 链接是为了让类或接口可以被 Ja ...

  3. .net core实践系列之短信服务-Sikiro.SMS.Api服务的实现

    前言 上篇<.net core实践系列之短信服务-架构设计>介绍了我对短信服务的架构设计,同时针对场景解析了我的设计理念.本篇继续讲解Api服务的实现过程. 源码地址:https://gi ...

  4. Wechat login authorization(OAuth2.0)

    一.前言 昨天小组开了个会,让我今天实现一个微信网页授权的功能,可以让用户在授权之后无需再次登录既可进入用户授权界面.在这之前我也从没接触过微信公众号开发之类的,也不知道公众号后台是啥样子的,自己所在 ...

  5. SqlBulkCopy简单封装,让批量插入更方便

    关于 SqlServer 批量插入的方式,前段时间也有大神给出了好几种批量插入的方式及对比测试(http://www.cnblogs.com/jiekzou/p/6145550.html),估计大家也 ...

  6. Ionic 入门与实战之第一章:Ionic 介绍与相关学习资源

    原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第一章,主要对 Ionic 的概念.发展历程.适配的移动平台等知识进行了介绍,并分享了 Ionic 相关的学习资源. 原文发表于我的技 ...

  7. nginx日志格式字段

    Nginx日志主要分为两种:访问日志和错误日志.日志开关在Nginx配置文件(/etc/nginx/nginx.conf)中设置,两种日志都可以选择性关闭,默认都是打开的. 访问日志 访问日志主要记录 ...

  8. C_数据结构_栈

    # include <stdio.h> # include <malloc.h> # include <stdlib.h> typedef struct Node ...

  9. 个人作业Week1

    一.<构建之法>提问 1.需求是什么?需求的规范需要明确吗? 2.一个人开发效率非常高,多人开发,个人效率随团队人数上升而直线下降,我们一般需要将大项目拆为小项目,使协作耦合产生的效率负影 ...

  10. UML类图及类与类之间的关系

    原文地址:http://www.uml.org.cn/oobject/201211231.asp 类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的 ...