一.json模块
序列化:把一个对象的形态改变一下,使他能够存放在文件中,或者在网络上传输,序列化也叫持久化,是把对象存储到永久介质中,这样就不会因为掉电而丢失。
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,json用于字符串和python的数据类型进行转换,json模块提供了四个功能:dumps、dump、loads、load
json.dumps和json.loads实例:
 #!/usr/bin/python3
 import json
 data = {'name':'JieSen','height':175,'weight':'68KG'}
 #dumps到字符串
 json_str = json.dumps(data)
 print('dumps到字符串:',json_str,'类型:',type(json_str))
 #loads回来
 json_dict = json.loads(json_str)
 print('loads回来:',json_dict,'类型:',type(json_dict))#输出:  dumps到字符串: {"weight": "68KG", "height": 175, "name": "JieSen"} 类型: <class 'str'>   loads回来: {'weight': '68KG', 'height': 175, 'name': 'JieSen'} 类型: <class 'dict'>
 
如果处理的是文件,而不是字符串,可以使用json.dump和json.load进行编码和解码。例如:
 #!/usr/bin/python3
 import json
 with open('data_json.txt','w+',encoding='utf-8') as f:
 json.dump(data,f)
 with open('data_json.txt','r') as f:
 data_r = json.load(f)
 print(data_r)
   #输出:
   {'name':'JieSen','height':175,'weight':'68KG'}
import json
l1 = ["alex", 123, "eric"]
l2 = ["alex", 123, 'eric']
s1 = """ ["alex", 123, "eric"] """
s2 = """ ["alex", 123, 'eric'] """
print(json.dumps(l1))
print(json.dumps(l2))
print(json.loads(s1))
print(json.loads(s2))  #这里会出错,网上说是引号要一致,暂时先这么理解吧,大家有更新的说法麻烦给说下
 
二.pickle模块
pickle序列化对象是一个二进制字节,以便将一个文件存储保存到文件或者通过网络传输。
pickle.dump和pickle.load实例:
 #!/use/bin/python3
 import pickle
 data = {'k1':1,'k2':2}
 #以二进制方式打开一个文件并将数据dump保存到文件里面
 with open('pickle_data.txt','wb') as f:
     pickle.dump(data,f)
 #以二进制读取方式打开文件并load加载
 with open('pickle_data.txt','rb') as f:
     fb = pickle.load(f)
     print(fb)

输出:

{'k1': 1, 'k2': 2}

如果处理的不是文件,可以使用pickle.dumps和pickle.loads,例如:

data = {'name':'JieSen','height':175,'weight':'68KG'}
#转换为一个字节流对象
pickle_byte = pickle.dumps(data)
print(pickle_byte,'格式:',type(pickle_byte))
#从字节流中恢复对象
pickle_dict = pickle.loads(pickle_byte)
print(pickle_dict,'格式:',type(pickle_dict))

输出:

b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x06\x00\x00\x00JieSenq\x02X\x06\x00\x00\x00heightq\x03K\xafX\x06\x00\x00\x00weightq\x04X\x04\x00\x00\x0068KGq\x05u.' 格式: <class 'bytes'>
{'name': 'JieSen', 'height': 175, 'weight': '68KG'} 格式: <class 'dict'>

 总结:

1.pickle序列化的是字节,而json序列化的是字符。

2.json.dump,json.load和pickle.dump,pickle.road处理的都是文件。

3.json.dumps把对象编码成json字符串

4.json.loads把已编码的 JSON 字符串解码为 Python 对象

day5-json和pickle序列化的更多相关文章

  1. json and pickle 序列化

    前言 文件只能存储字符串.二进制,若把内存的数据对象存到硬盘   从硬盘里读取数据,里面不止是字符串的类型,因此用到了json and pickle 序列化 json序列化 作用:用于不同语言进行的数 ...

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

    阅读目录 1.1.1导入模块 1.1.2__name__ 1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代 ...

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

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

  4. Python的json and pickle序列化

    json序列化和json反序列化 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import json a = ...

  5. (1)json和pickle序列化模块

    json 和pickle 模块 json和pickle模块下都有4个功能 dumps  <---> loads  (序列化 <--->反序列化) dump <---> ...

  6. Python3 json、pickle序列化与反序列化

    注意:可以dumps多次,loads只能一次,一般我们只dumps一次,loads一次,多个版本就写入多个文件 一.json序列化与反序列化: 支持各种语言数据交互,但只能处理字典,列表,集合等简单的 ...

  7. json和pickle序列化模块

    一.json序列化模块 1.序列化:将内存数据转成字符串加以保存. 2.反序列化:将字符串转成内存数据加以读取. data = { '北京':{ '五道口':{ 'sohu':'引擎', } } } ...

  8. python 跨语言数据交互、json、pickle(序列化)、urllib、requests(爬虫模块)、XML。

    Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] 和 [python基本数据类型]间进 ...

  9. json and pickle 序列化和反序列化

    类似vmware虚拟机里的虚拟主机挂起操作,把当前内存拷贝成文件保存. 上面的这种操作就叫内存序列化:如下图: 有序列化就有反序列化,要把文件里的东西再恢复成字典:eval把字符串变成字典. 但是上面 ...

  10. python学习之day5,装饰器,生成器,迭代器,json,pickle

    1.装饰器 import os import time def auth(type): def timeer(func): def inner(*args,**kwargs): start = tim ...

随机推荐

  1. openCV学习——一、图像读取、显示、输出

    openCV学习——一.图像读取.显示.输出   一.Mat imread(const string& filename,int flags=1),用于读取图片 1.参数介绍 filename ...

  2. UVA 11178 Morley's Theorem(几何)

    Morley's Theorem [题目链接]Morley's Theorem [题目类型]几何 &题解: 蓝书P259 简单的几何模拟,但要熟练的应用模板,还有注意模板的适用范围和传参不要传 ...

  3. Docker日志

    搜索Redis镜像 docker search redis ***************************** 拉取Redis镜像 docker pull redis ************ ...

  4. windows中查看端口占用情况

    说几个命令, netstat 用于查看进程端口占用情况,用法可以使用netstat -h 查看 tasklist 列出当前进程,有进程号 findstr 用于过滤字符串 大致过程就是: 1. 使用 n ...

  5. Yii2将查询数据变为键值对数组及查询构建器

  6. 导航,头部,CSS基础

    1.制作自己的导航条. 2.HTML头部元素: <base>  定义了页面链接标签的默认链接地址 <style>  定义了HTML文档的样式文件 <link>  定 ...

  7. 【CDH学习之二】ClouderaManager安装

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 zookeeper-3.4.11 搭建方案:   serve ...

  8. BufferReader BufferWriter

    Copying information from one file to another with 'BufferReader BufferWriter' public class Demo5 { p ...

  9. 在HUE中将文本格式的数据导入hive数仓中

    今天有一个需求需要将一份文档形式的hft与fdd的城市关系关系的数据导入到hive数仓中,之前没有在hue中进行这项操作(上家都是通过xshell登录堡垒机直接连服务器进行操作的),特此记录一下. - ...

  10. Presto 学习

    Presto 基础知识与概念学习可以参考这些博客: presto 0.166概述 https://www.cnblogs.com/sorco/p/7060166.html Presto学习-prest ...