一.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. composer 用法

    构建工程 composer create-project test/name project_name help composer help create-project 参数 --prefer-di ...

  2. python threading acquire release

    线程同步 //test.py import threading import time exitFlag = 0 class myThread (threading.Thread): def __in ...

  3. 本地tp项目上传服务器报runtime/cache错误

    很简单,给runtime权限777 就好了 chmod -r 777 runctime

  4. 使用promisify解决fs的回调地狱问题

  5. QT自定义消息

    1.派生QAbstractNativeEventFilter,重写nativeEventFilter()函数 #ifndef CMYMESSAGEHANDLER_H #define CMYMESSAG ...

  6. uvalive 3126 Taxi Cab Scheme

    题意: 有m个人要坐出租车,每个人给出出发时间,出发地点和目的地(以二维坐标表示),两个地点之间所花的时间计算方式是两点之间的哈密顿距离.现在需要排遣车出去,一辆车每次只能装一个人,如果一辆车在装完一 ...

  7. MQTT安装

    技术链接:http://docs.emqtt.cn/zh_CN/latest/getstarted.htmlDashboard控制台:http://10.74.20.43:18083/#/ 默认登录用 ...

  8. session_start 统计实时访客人数

    void Session_Start(object sender, EventArgs e) { Application.Lock(); Application["OnLine"] ...

  9. 【转】ETL讲解(很详细!!!)

    ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据. ETL是BI项目重要的一个环节. 通常情况下,在 ...

  10. Linux基础命令---显示路由表route

    route route指令用于显示或者修改IP路由表.它的主要用途是在使用ifconfig(8)程序配置接口后,通过接口设置到特定主机或网络的静态路由.当使用add或del选项时,路由将修改路由表.如 ...