序列化

序列:字符串

序列化:将其它数据类型转换成字符串的过程。

反序列化:字符串转成其它数据类型。

序列化的目的

1:以某种存储形式使用自定义对象持久化。

2:将对象从一个地方传递到另一个地方。

3:是程序更具有维护性。

json 和 pickle 模块

用于序列化的两个模块

json,用于字符串和 python 数据类型间进行转换。

pickle,用于 python 特有的数据类型和 python 的数据类型进行转换。

注意:pickle 仅用于 python

  • json
# dumps 和 loads
import json dic = {'a':1,'b':2,'c':3}
res = json.dumps(dic) # 序列化:将一个字典转换成一个字符串
print(res,type(res))
# {"a": 1, "b": 2, "c": 3} <class 'str'>
res1 = json.loads(res) # 反序列化:将一个字符串格式的字典转换成一个字典
# 注意:要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示。
print(res1,type(res1))
# {'a': 1, 'b': 2, 'c': 3} <class 'dict'> # 也可处理嵌套的数据类型
lis = [1,2,['a','b','c'],3,{'k1':'a','k2':'b','k3':'c'}]
res = json.dumps(lis)
print(res)
# [1, 2, ["a", "b", "c"], 3, {"k1": "a", "k2": "b", "k3": "c"}]
res1 = json.loads(res)
print(res1)
# [1, 2, ['a', 'b', 'c'], 3, {'k1': 'a', 'k2': 'b', 'k3': 'c'}]
# dump 和 load
import json dic = {'name':'zkim','age':18,'hobby':'running'}
with open('user_info','w',encoding='utf-8')as f:
json.dump(dic,f)
# dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件 with open('user_info','r',encoding='utf-8')as f:
res = json.load(f)
print(res)
# load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
  • pickle
import pickle

# dumps 和 loads
dic = {'name':'zkim','hobby':'running'}
str_dic = pickle.dumps(dic)
print(str_dic) # 一串二进制 str_dic1 = pickle.loads(str_dic)
print(str_dic1)
# {'name': 'zkim', 'hobby': 'running'} # dump 和 load
with open('userinfo.txt','wb')as f:
pickle.dump(dic,f)
with open('userinfo.txt','rb')as f:
res = pickle.load(f)
print(res)
# {'name': 'zkim', 'hobby': 'running'}

模块 json 和 pickle的更多相关文章

  1. python序列化模块json和pickle

    序列化相关 1. json 应用场景: json模块主要用于处理json格式的数据,可以将json格式的数据转化为python的字典,便于python处理,同时也可以将python的字典或列表等对象转 ...

  2. Python中模块json与pickle的功能介绍

    json & pickle & shelve 1. json的序列化与反序列化 json的使用需要导入该模块,一般使用import json即可. json的序列化 方法1:json. ...

  3. python中序列化模块json和pickle

    json模块:json是第三方包,不是系统内置模块,以字符串序列 常用操作有: json.dumps() # 将变量序列化,即将功能性字符转化为字符串 例: >>> import j ...

  4. day5 常用模块json和pickle

    json 和 pickle json和pickle是用于字符串序列化和反序列化的过程,我们在存储和使用的时候,经常把列表存入文件,读取的时候我们还想以列表的形式读取.就需要使用json和pickle. ...

  5. 常用模块一(os模块、序列化模块(json和pickle))

    一.os模块 os模块是与操作系统交互的一个接口. import os # 和文件和文件夹的操作有关 os.makedirs('dirname1/dirname2') # 可生成多层递归目录 os.r ...

  6. 序列化的两个模块(json和pickle)

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

  7. 20,序列化模块 json,pickle,shelve

    序列化模块 什么叫序列化? 将原本的字典,列表等内容转换成一个字符串的过程叫做序列化. 序列化的目的? 数据结构 通过序列化 转成 str. str 通过反序列化 转化成数据结构. json: jso ...

  8. 常用文件操作模块json,pickle、shelve和XML

    一.json 和 pickle模块 用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Js ...

  9. 2019-7-18 collections,time,random,os,sys,序列化模块(json和pickle)应用

    一.collections模块 1.具名元组:namedtuple(生成可以使用名字来访问元素的tuple) 表示坐标点x为1  y为2的坐标 注意:第二个参数可以传可迭代对象,也可以传字符串,但是字 ...

随机推荐

  1. ELK系列(7) - 测试环境下Logstash异常退出:block in multi_receive_encoded

    问题与分析 在本地测试无误后将ELK部署到了测试环境,结果第二天发现Logstash挂掉了,一开始以为是自动部署之类导致的问题.之后几天时间里Logstash总是会down掉,查看了下日志文件,发现报 ...

  2. [WEB安全]Dirsearch工具命令

    下载项目,并打开 ┌─[root@kali]─[/kali] └──╼ #git clone https://github.com/maurosoria/dirsearch ┌─[root@kali] ...

  3. 数据结构——KMP算法

    算法介绍 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法).KMP算法的核心是利用 ...

  4. 关于Flutter启动项目白屏,报错[ERROR:flutter/shell/gpu/gpu_surface_gl.cc(58)] Failed to setup Skia Gr context.问题的解决方案

    首先,环境如下: 1.系统:windows10 64位   Android SDK version: 28.0.3   Flutter SDK: v1.5.4-hotfix.2   模拟器: 网易Mu ...

  5. php 验证中文和部分自定义符号

    $str = '54787dDp中s-:"'; $rule ="/^[\x{4e00}-\x{9fa5}A-Za-z0-9`·!!@#$\¥%…^&*(())\-+=“.\ ...

  6. matlab中x.^2与x^2有什么区别?

    .^2是矩阵中的每个元素都求平方,^2是求矩阵的平方或两个相同的矩阵相乘,因此要求矩阵为方阵,且看下面的例子x=1:4x = 1 2 3 4 x.^2 ans = 1 4 9 16 x^2 Error ...

  7. Ubuntu16.04 + cuda9.0 +cudnn7.1(转载)

    转载一个详细可用的ubuntu16.04+cuda9.0+cudnn7.1教程. 0 - 参考材料 https://blog.csdn.net/Umi_you/article/details/8026 ...

  8. Inventor2018专业版软件安装激活教程

    如果你安装的是Autodesk Inventor Professional 2018,那么序列号为:666-69696969,产品密钥为:797J1, 如果你安装的是Autodesk Inventor ...

  9. hue集成mysql找不到 libmysqlclient.so.16问题解决

    首先我的配置文件如下,这个是没有问题的 但是在重启hue连接mysql时,却发生了如下问题: 这个错误的意思就是没有找到libmysqlclient_r.so.16这个文件,可能是我安装的mysql有 ...

  10. javascript中的Error对象

    在javascript中一旦代码解析或运行时发生错误,javascript引擎就会自动产生并抛出一个Error对象的实例,然后整个程序就中断在发生错误的地方. Error对象的实例有三个基本的属性: ...