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 = ...
随机推荐
- keras常见问题
问题:AttributeError: 'CRF' object has no attribute '_outbound_nodes' 解答:这个一般情况下是keras版本的问题,将其改为keras== ...
- Beta冲刺——5.25
这个作业属于哪个课程 软件工程 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.解决小程序之前的遗留问题 ...
- 【Mybatis】mybatis开启Log4j日志、增删改查操作
Mybatis日志(最常用的Log4j) 官方网站http://www.mybatis.org/mybatis-3/zh/logging.html 1.在src目录下创建一个log4j.propert ...
- 【Tomcat】JSP使用Session、Cookie实现购物车
购物界面shop.jsp 初始页面 添加商品后,在session中设置属性,重定向回到shop.jsp,然后根据session的内容显示结果 Cookie设置setMaxAge可以延长session的 ...
- Java实现蓝桥杯 算法训练 Professor Monotonic's Network
试题 算法训练 Professor Monotonic's Network 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 无聊的教授最近在做一项关于比较网络的实验.一个比较网络由若 ...
- Java实现 LeetCode 23 合并K个排序链表
23. 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输 ...
- java实现第七届蓝桥杯打靶
打靶 题目描述 小明参加X星球的打靶比赛. 比赛使用电子感应计分系统.其中有一局,小明得了96分. 这局小明共打了6发子弹,没有脱靶. 但望远镜看过去,只有3个弹孔. 显然,有些子弹准确地穿过了前边的 ...
- Mac上查看当前安卓手机上打开的app的包名和主程序入口
1.连接上手机,数据线链接或者无线连接随便 2.打开你需要查看的app 3.打开终端,输入命令: adb shell dumpsys window w |grep \/ |grep name=
- (十)DVWA之SQL Injection--测试分析(Impossible)
DVWA之SQL Injection--测试分析(Impossible) 防御级别为Impossible的后端代码:impossible.php <?php if( isset( $_GET[ ...
- maven配置阿里云仓库进行下载
maven阿里云仓库下载 为了解决maven在下载jar包的时候,速度比较慢的问题,可以配置阿里云仓库配置方式的进行下载,首先找到您安装的maven路径. 在conf文件夹下面有个settings.x ...