python 之 json 与pickle 模块
序例化:将对象转换为可通过网络传输或可以存储到本地磁盘的数据格式(如:XML、JSON或特定格式的字节串)的过程称为序列化;反之,则称为反序列化。
1.【JSON】
import json
dic={'name':'kebi','age':23,'sex':'male'}
print(type(dic))#<class 'dict'>
data=json.dumps(dic)
print("type",type(data))#<class 'str'>
print("data",data)
f=open('JSON_test','w')
f.write(data) #-------------------等价于json.dump(dic,f)
f.close()
#转换,反序列化
with open('JSON_test','r') as f:
data = json.loads(f.read())
print(data)
print(data['name'])
2.【JSON进阶】
Python的dict对象可以直接序列化为JSON的{},不过,很多时候可以用class表示对象,比如定义Student类,然后序列化:
import json class Student(object):
def __init__(self,name,age,score):
self.name=name
self.age=age
self.score=score def studen2dic(std): #先将对象实例变为一个json对象
return {
'name':std.name,
'age':std.age,
'score':std.score }
s=Student('Bob',22,99)
#这样,Student实例首先被student2dict()函数转换成dict,然后再被顺利序列化为JSON: print(json.dumps(s,default=studen2dic))
print(json.dumps(s,default=lambda obj:obj.__dict__))#如果遇到一个Teacher类的实例,照样无法序列化为JSON。我们可以偷个懒,把任意class的实例变为dict #------json反转为对象
def dict2student(d):
return Student(d['name'],d['age'],d['score'])
json_str2='{"name":"lan","age":12,"score":100}'
print(json.loads(json_str2,object_hook=dict2student))#打印出来的是对象地址
s2=json.loads(json_str2,object_hook=dict2student)
print(s2.age,s2.name)
【3】pickle
import pickle
dic={'name':'alvin','age':23,'sex':'male'}
print(type(dic))#<class 'dict'>
j=pickle.dumps(dic)
print(type(j))#<class 'bytes'>
f=open('序列化对象_pickle','wb')#注意是w是写入str,wb是写入bytes,j是'bytes'
f.write(j) #-------------------等价于pickle.dump(dic,f)
f.close()
#-------------------------反序列化
import pickle
f=open('序列化对象_pickle','rb')
data=pickle.loads(f.read())# 等价于data=pickle.load(f)
print(data['age'])
【4】JSON和pickle 的区别:
json:用于(不同平台和多语言)字符串和python数据类型进行转换

python 之 json 与pickle 模块的更多相关文章
- python(6)- json和pickle模块
这是用于序列化的两个模块: json: 用于字符串和python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 Json模块提供了四个功能:dumps ...
- python基础-json、pickle模块
json.pickle区别 总结: """ json: 1.不是所有的数据类型否可以序列化,序列化返回结果为字符串 2.不能多次对同一文件序列化 3.json数据可以跨语 ...
- python之json、pickle模块
一.json模块 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候, ...
- python值json与pickle模块
#json 是用来序列化对象的 # 只有2个方法,序列化与反序列化 # 但是不能序列化类 与 函数 import json dict={"key1":[1,2,3,4,5]} f ...
- python模块(json和pickle模块)
json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...
- Python json和pickle模块
用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...
- Python之时间模块、random模块、json与pickle模块
一.时间模块 1.常用时间模块 import time # 时间分为三种格式 #1.时间戳---------------------以秒计算 # start= time.time() # time.s ...
- python常用模块之json、pickle模块
python常用模块之json.pickle模块 什么是序列化? 序列化就是把内存里的数据类型转换成字符,以便其能存储到硬盘或者通过网络进行传输,因为硬盘或网络传输时只接受bytes. 为什么要序列化 ...
- Python的json and pickle序列化
json序列化和json反序列化 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import json a = ...
随机推荐
- 短小而精悍的JsvaScript函数
1. 回到顶部, 使用浏览器的刷新频率 requestAnimationFrame 来实现的 const scrollToTop = () => { const c = document.doc ...
- ElementUI(vue UI库)、iView(vue UI库)、ant design(react UI库)中组件的区别
ElementUI(vue UI库).iView(vue UI库).ant design(react UI库)中组件的区别: 事项 ElementUI iView ant design 全局加载进度条 ...
- centos redis5 安装 和 基本配置
1 下载 redis wget http://download.redis.io/releases/redis-5.0.0.tar.gz 2 解压 tar xzf redis-5.0.0.tar.gz ...
- yum和编译两种方式升级or降级Centos内核
http://blog.51cto.com/renzhiyuan/1882599 今天探讨用yum和编译两种方式升级或者降级内核版本: 升级:比如玩kvm,docker等虚拟化,centos内核则升级 ...
- php 过滤器filter_var验证邮箱/url/ip等
验证邮箱.url或者ip,除了使用正则外,也可以使用内置的函数库过滤器filter来完成这些功能. filter_var (PHP 5 >= 5.2.0, PHP 7)filter_var — ...
- Day 01 计算机组成和操作系统
一.编程与编程语言 1.什么是语言?什么是编程语言? 答:语言是一种事物与另一种事物沟通的介质. 编程语言是程序员与计算机沟通的介质. 2.什么是编程? 答:程序员把自己想要让计算机做的事用编程语言表 ...
- 排序算法<No.3>【桶排序】
算法,是永恒的技能,今天继续算法篇,将研究桶排序. 算法思想: 桶排序,其思想非常简单易懂,就是是将一个数据表分割成许多小数据集,每个数据集对应于一个新的集合(也就是所谓的桶bucket),然后每个b ...
- ES Route
在ElaticSearch里面,路由功能算是一个高级用法,大多数时候我们用的都是系统默认的路由功能,一个es索引可以分多个shard和每个shard又可以有多个replia,默认情况下,elastic ...
- Django项目--在开发环境运行静态页面
在项目中运行静态页面的准备工作: 开发中使用前端node.js 提供的live-server服务器作为前端开发服务器使用 linux终端中准备node环境 npm install -g live-se ...
- Python Selenium set Chrome Preference Download Location.
def set_chrome_pref(self): chromeOptions = webdriver.ChromeOptions() prefs = {"download.default ...