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 = ...
随机推荐
- WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping 异常详细信息: System.InvalidOperationException: WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的
WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping.请添加一个名为 jquery (区分大小写)的 ScriptRes ...
- Error C2079 'CMFCPropertySheet::m_wndOutlookBar' uses undefined class 'CMFCOutlookBar'
Severity Code Description Project File Line Suppression StateError C2079 'CMFCPropertySheet::m_wndOu ...
- 「MoreThanJava」计算机系统概述
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- Rocket - tilelink - TLArbiter
https://mp.weixin.qq.com/s/0ob-Fq-ZOoj-_S7pTJu6rQ 介绍TLArbiter的实现,主要关注如何实现burst的多个beat的输出. 1 ...
- Java实现 LeetCode 519 随机翻转矩阵
519. 随机翻转矩阵 题中给出一个 n 行 n 列的二维矩阵 (n_rows,n_cols),且所有值被初始化为 0.要求编写一个 flip 函数,均匀随机的将矩阵中的 0 变为 1,并返回该值的位 ...
- Java实现 LeetCode 338 比特位计数
338. 比特位计数 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1 ...
- Java实现 LeetCode 201 数字范围按位与
201. 数字范围按位与 给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点). 示例 1: 输入 ...
- 11.经典O(n²)比较型排序算法
关注公号「码哥字节」修炼技术内功心法,完整代码可跳转 GitHub:https://github.com/UniqueDong/algorithms.git 摘要:排序算法提多了,很多甚至连名字你都没 ...
- linux下使用tcpdump抓包分析tcp的三次握手
首先贴上tcp 三次握手的原理图服务器开启ftp服务并执行tcpdump抓包服务器:192.168.3.14 ftp服务客户端:192.168.3.100 服务器执行以下命令,客户端访问服务器ftp: ...
- 数据结构之链表(Linked list)
说明:如果仔细阅读完全文后,可能感觉有些不统一,这里先说明下原因. 链表尾引用不统一:在介绍单链表时,只有一个链表首部的引用(head) 指向第一个节点.你看到后面关于双链表及循环列表时,除了指向第一 ...