Python3-json & pickle 序列化
JSON(JavaScript Object Notation, JS对象标记)是一中轻量级的数据交换格式,大部分语言都支持
Python3中的json提供了对json格式数据的序列化支持
json.dump(obj, fileobj)
将Python对象序列化成json字符串并写入到打开的文件对象中
import json # 写入json数据
with open("demo.txt", "w") as f:
data = {"one": 1, "Two": 2, "Three": 3, "Hello": "你好"}
json.dump(data, f)
json.load(fileobj)
返回读取打开的文件对象中的所有json字符串,并转成Python对象
import json # 读取json数据(只能一次性读取全部,不能像pickle一样分次load())
with open("demo.txt", "r") as f2:
print(json.load(f2))
json.dumps(obj)
将Python对象转换成json字符串
json.loads(json_str)
将json字符串转换成Python对象
import json data = {"one": 1, "Two": 2, "Three": 3, "Hello": "你好"}
json_str = json.dumps(data) # json格式数据编码
print(json_str) # 输出结果: {"one": 1, "Two": 2, "Three": 3, "Hello": "\u4f60\u597d"} result = json.loads(json_str) # json格式数据解码
print(result) # {'one': 1, 'Two': 2, 'Three': 3, 'Hello': '你好'}
Python3中的pickle提供了对几乎所有的Python对象的序列化支持
pickle.dump(obj, fileobj)
将Python对象序列化成pickle字节数据并写入到打开的文件对象中
pickle.load(fileobj)
返回读取打开的文件对象中的第n次dump()的pickle字节数据,并转成Python对象
pickle.dumps(obj)
将Python对象转换成pickle字节数据
pickle.loads(pickle_bytes)
将pickle字节数据转换成Python对象
import pickle class User:
username = "Jet" data = {"one": 1, "Two": 2, "Three": 3, "Hello": "你好"} # pickle数据序列化写入,几乎支持所有Python对象
with open("pickle_data.txt", "wb") as wf:
u = User()
pickle.dump(u, wf)
pickle.dump(data, wf) # pickle序列化数据读取,有几次dump()就可以load()几次
with open("pickle_data.txt", "rb") as rf:
print(pickle.load(rf).username) # 输出结果: Jet
print(pickle.load(rf)) # 输出结果: {'one': 1, 'Two': 2, 'Three': 3, 'Hello': '你好'}
json模块和pickle模块的区别
1.JSON是一中文本序列化格式(它输出unicode文本,大多数时候为UTF-8),而Pickle是一个二进制的序列化格式
2.JSON是人类可读的,而Pickle不是
3.JSON是可互操作的,很多编程语言都支持,而pickle是特定于Python语言交互的
4.json模块支持的Python对象只有几个,如字典、字符串、数字等,而pickle几乎全部支持
参考资料
http://python.usyiyi.cn/translate/python_352/library/json.html
http://python.usyiyi.cn/translate/python_352/library/pickle.html
Python3-json & pickle 序列化的更多相关文章
- Python3基础(4)匿名函数、装饰器、生成器、迭代器、内置函数、json&pickle序列化、软件目录开发规范、不同目录间模块调用
---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...
- Python3 json &pickle 数据序列化
json 所有语言通用的信息交换格式 json.dumps()将list列表.dict字典.元组.函数等对象转换为可以存储的字符格式存入文件 json.dump(数据对象名,已以写方式打开的对象) 直 ...
- json&pickle序列化
一.用途 我们需要将内存中的数据进行序列化,即写入文件中时,写入的类型只能是字符串或者二进制类型.但是如果我们想要将复杂一些的数据类型,如:列表.字典或者函数之类的同样进行序列化,我们就要用到 jso ...
- json & pickle 序列化
#!/usr/bin/python # -*- coding: utf-8 -*- # 序列化: 例如把字典写进文件 info = { 'name': 'alex', 'age': 22 } f = ...
- json&pickle序列化和软件开发规范
json和pickle 用于序列化的两个模块 json 用于字符串和python数据类型间进行转换,json只支持列表,字典这样简单的数据类型 但是它不支持类,函数这样的数据类型转换 pickle ...
- 13、Python文件处理、os模块、json/pickle序列化模块
一.字符编码 Python3中字符串默认为Unicode编码. str类型的数据可以编码成其他字符编码的格式,编码的结果为bytes类型. # coding:gbk x = '上' # 当程序执行时, ...
- Python序列化,json&pickle&shelve模块
1. 序列化说明 序列化可将非字符串的数据类型的数据进行存档,如字典.列表甚至是函数等等 反序列化,将通过序列化保存的文件内容反序列化即可得到数据原本的样子,可直接使用 2. Python中常用的序列 ...
- 第五章 模块之 shtil 、 json / pickle、importlib、collections
5.8 shtil 高级的 文件.文件夹.压缩包 处理模块 shutil.rmtree 删除目录 import shutilshutil.rmtree(path) shutil.move 重命名:移动 ...
- Python3 json、pickle序列化与反序列化
注意:可以dumps多次,loads只能一次,一般我们只dumps一次,loads一次,多个版本就写入多个文件 一.json序列化与反序列化: 支持各种语言数据交互,但只能处理字典,列表,集合等简单的 ...
- Python的json and pickle序列化
json序列化和json反序列化 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import json a = ...
随机推荐
- Matlab矩阵学习一 矩阵的创建
Matlab矩阵创建 1.直接输入数值创建 矩阵元素要用[ ] 括起来,";"代表一行结束,以下创建方式也是合法的,矩阵的元素可以是实数,也可以是复数,复数用a+bi表 ...
- 关于替换“c2a0”十六进制字符的方法
一.背景:在爬取网络小说生成的文件中,发现有些空格没法替换,使用十六进制编辑器查看,发现这些空格字符的十六进制值是“c2a0”,其来源是网页控制的特殊字符,这是一个叫做Non-breaking spa ...
- 【Storm】安装教程
1.下载tar.gz包 2.上传解压,tar -zxvf 包 -C 路径 3.修改conf/storm.yaml storm.zookeeper.servers: - "bigboss1&q ...
- background-color的覆盖范围
1. 一般div的background-color覆盖范围 到 border,margin的颜色由外层元素决定 2. body的background-color覆盖范围 到 margin,但 当htm ...
- DynamIQ扫盲文
综述: ARM CPU的架构都基于big.LITTLE大小核技术.而再big.LITTLE的基础上,又添加了DynamIQ.单一Cluster中可以又8个core,且支持不同架构的core,以及支持不 ...
- Java实现 LeetCode 319 灯泡开关
319. 灯泡开关 初始时有 n 个灯泡关闭. 第 1 轮,你打开所有的灯泡. 第 2 轮,每两个灯泡你关闭一次. 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭).第 i 轮,每 ...
- SQLServer2019安装教程
可以去官网下载,我百度网盘也有都一样 https://pan.baidu.com/s/1i3umqHXSUMbxJ9rRi6mU4A 提取码:5g9q 打开应用程序 点击安装,点第一个全新得SQL s ...
- PAT 说反话
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小 ...
- 深入理解Java的动态编译
前提 笔者很久之前就有个想法:参考现有的主流ORM框架的设计,造一个ORM轮子,在基本不改变使用体验的前提下把框架依赖的大量的反射设计去掉,这些反射API构筑的组件使用动态编译加载的实例去替代,从而可 ...
- 数据结构与算法-python描述-双向链表
# coding:utf-8 # 双向链表的相关操作: # is_empty() 链表是否为空 # length() 链表长度 # travel() 遍历链表 # add(item) 链表头部添加 # ...