json反序列化与pickle的用法
json反序列化与pickle
一、定义
序列化:将内存中的不可持久化和传输对象转换为可方便持久化和传输对象的过程。
反序列化:将可持久化和传输对象转换为不可持久化和传输对象的过程。
二、 应用场景
跨平台数据传输;
保留上一次运行程序时对对象的修改
三、模块和函数
1. json
dumps()、dump()(序列化)
loads()、load() (反序列化)
2. pickle
dumps()、dump()(序列化)
loads()、load ()(反序列化)
四、案例
序列化
info={"name":"kezi","age":22}
f=open("test.text","w")
f.write(str(info))
f.close()
反序列
info={"name":"kezi","age":22}
f=open("test.text","r")
data=eval(f.read())
f.close()
print (data['age'])
打印结果
22
json 简单用法
import json
info={"name":"kezi","age":22}
f=open("test.text","w")
print(json.dumps(info))
f.write(json.dumps(info))
#f.write(str(info))
f.close()
打印结果
{"age": 22, "name": "kezi"}
import json
f=open("test.text","r")
#data=eval(f.read())
data=json.loads(f.read())
f.close()
print (data['age'])
打印结果
22
序列化
pickle
import pickle
def si(name):
print("helle",name)
info={"name":"kezi","age":22,"func":si}
f=open("test.text","wb")
print(pickle.dumps(info))
f.write(pickle.dumps(info))
#f.write(str(info))
f.close()
打印结果
b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x04\x00\x00\x00keziq\x02X\x03\x00\x00\x00ageq\x03K\x16X\x04\x00\x00\x00funcq\x04c__main__\nsi\nq\x05u.'
反序列化
import pickle
def si(name):
print("helle2",name)
f=open("test.text","rb")
#data=eval(f.read())
data=pickle.loads(f.read())
f.close()
print (data["func"]("kezi"))
打印结果
helle2 kezi
None
另一种简化写法
import pickle
def si(name):
print("helle",name)
info={"name":"kezi","age":22,"func":si}
f=open("test.text","wb")
pickle.dump(info,f) #f.write(pickle.dumps(info))
f.close()
import pickle
def si(name):
print("helle2",name)
f=open("test.text","rb")
#data=eval(f.read())
data=pickle.load(f)#data=pickle.loads(f.read())
f.close()
print (data ["func"]("kezi"))
pickle序列化结果为bites类型,只适合于Python机器之间的交互。
|
JSON类型
|
Python类型
|
|
{}
|
dict
|
|
[]
|
list
|
|
"string"
|
'str'或u'unicode'
|
|
1234.56
|
int或float
|
|
true/false
|
True/False
|
|
null
|
None
|
注:
(1)序列化与反序列化是为了解决内存中对象的持久化与传输问题;
json反序列化与pickle的用法的更多相关文章
- json模块和pickle模块的用法
在python中,可以使用pickle和json两个模块对数据进行序列化操作 其中: json可以用于字符串或者字典等与python数据类型之间的序列化与反序列化操作 pickle可以用于python ...
- Python开发之序列化与反序列化:pickle、json模块使用详解
1 引言 在日常开发中,所有的对象都是存储在内存当中,尤其是像python这样的坚持一切接对象的高级程序设计语言,一旦关机,在写在内存中的数据都将不复存在.另一方面,存储在内存够中的对象由于编程语言. ...
- 序列化模块— json模块,pickle模块,shelve模块
json模块 pickle模块 shelve模块 序列化——将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. # 序列化模块 # 数据类型转化成字符串的过程就是序列化 # 为了方便存储和网 ...
- json模块和pickle模块(二十二)
之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型, json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用 ...
- Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块
一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version . sys.maxint ...
- Newtonsoft.Json(Json.net)的基本用法
Newtonsoft.Json(Json.net)的基本用法 其它资料 JSON详解 添加引用: 使用NuGet,命令:install-package Newtonsoft.Json 实体类: pub ...
- Python库:序列化和反序列化模块pickle介绍
1 前言 在“通过简单示例来理解什么是机器学习”这篇文章里提到了pickle库的使用,本文来做进一步的阐述. 通过简单示例来理解什么是机器学习 pickle是python语言的一个标准模块,安装pyt ...
- Newtonsoft.Json反序列化(Deserialize)出错:Bad JSON escape sequence
使用Newtonsoft.Json反序列化收到的字串为JObject或其它支持的数据模型,有时错误,提示如下: Bad JSON escape sequence: \c. Path , positio ...
- python中序列化json模块和pickle模块
内置模块和第三方模块 json模块和pickle 模块(序列化模块) 什么是序列化? 序列化就是将内粗这种的数据类型转成另一种格式 序列化:字典类型——>序列化——>其他格式——>存 ...
随机推荐
- CodeChef-----February Challenge 2018---Broken Clock(极坐标+三角函数递推+矩阵快速幂)
链接: https://www.codechef.com/FEB18/problems/BROCLK Broken Clock Problem Code: BROCLK Chef has a clo ...
- Python爬取中文页面的时候出现的乱码问题(续)
我在上一篇博客中说明了在爬取数据的时候,把数据写入到文件的乱码问题 在这一篇里面我做一个总结: 1.首先应该看一个案例 我把数据写在.py文件中: #coding:utf-8 s = 'hehe测试中 ...
- git创建公钥匙
目的: 使用SSH公钥可以让你在你的电脑和码云通讯的时候使用安全连接(git的remote要使用SSH地址) 1.打开终端进入.ssh目录输入当下命令 cd ~/.ssh 如果.ssh文件夹不存在,执 ...
- 微信小程序 视频 组件
video 组件 视频组件 相关的api :wx.createVideoContext 支持的格式: 支持的编码格式 video 组件的属性: src:类型 字符串 必填 要播放视频的资源地址 (支持 ...
- nw.js node-webkit基本程序结构与配置package.json配置说明
(一)基本程序结构 如上图,是一个nw程序的基本组织结构,在根目录下有package.json(程序的配置文件)和index.html(可以是任意名称,应用的启动页面):js/css/resource ...
- 使用pycharm编写python乱码
开始总是乱码,该设置的都设置了,后来用charde检测编码也一直报错,之后重启了pycharm就好了,乱码问题也没了
- 将Unix时间戳转换为Date、Json属性动态生成反序列化、序列化指定属性
实体类 public class Test { [JsonIgnore] public string GetDate { get { return GetTime.ToString("yyy ...
- echars 饼图 --》二次封装
<template> <!-- 饼状图 1. 调用页面引入 import EcharsPie from '@/components/echarsPie.vue'; 注:自定义的组件名 ...
- 创建React脚手架
node版本10.14.2 下载地址 如果是其版本的话会出错 css-loader 会不兼容 主要是8.x的版本不兼容 npm install -g create-react-app 全局安装 cre ...
- 树形dp相关
前言 1:与树或图的生成树相关的动态规划. 2:以每棵子树为子结构,在父亲节点合并,注意树具有天然的子结构.这是很优美的很利于dp的. 3:巧妙利用Bfs或Dfs序,可以优化问题,或得到好的解决方法. ...