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 = ...
随机推荐
- 【朝夕专刊】RabbitMQ消息的持久化优先级
欢迎大家阅读<朝夕Net社区技术专刊> 我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦! 上篇文章介绍了R ...
- 使用setTimeout()代替setInterval()
背景: 在JavaScript中,有两种定时器:setTimeout()和setInterval():setTimeout()只执行一次定时操作,setInterval()执行无限次定时操作:但是大多 ...
- xss(跨站脚本攻击)
xss(跨站脚本攻击) 原理:攻击者可以通过在页面中注入恶意链接或者脚本代码,当受害者访问时,脚本代码会在其浏览器中执行,这个时候,我们可以获取当前用户的cookie或者进行重定向等操作. xss造成 ...
- 使用锚点定位不改变url同时平滑的滑动到锚点位置,不会生硬的直接到锚点位置
使用锚点定位不改变url同时平滑的滑动到锚点位置,不会生硬的直接到锚点位置 对前端来说锚点是一个很好用的技术,它能快速定位到预先埋好的位置. 但是美中不足的是它会改变请求地址url,当用户使用了锚点的 ...
- Java实现 蓝桥杯 算法提高 特等奖学金(暴力)
试题 算法提高 特等奖学金 问题描述 土豪大学每年都会给学生颁发巨额的特等奖学金,当然,获奖的前提是要足够优秀.这所大学有n名学生,他们中的每个人都会在m门必修课的每门课上获得一个百分制的整数成绩(0 ...
- Java实现 蓝桥杯VIP 算法训练 一元三次方程
问题描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差 ...
- Java实现二分查找(折半查找)
1 问题描述 首先,了解一下何为折半查找?此处,借用<算法设计与分析基础>第三版上一段文字介绍: 2 解决方案 2.1 递归法 package com.liuzhen.chapter4; ...
- java实现输入日期
/* 从键盘输入一个日期,格式为 yyyy-M-d 要求计算该日期与 1949 年 10 月 1 日距离多少天 例如: 用户输入了:1949-10-2 程序输出:1 用户输入了:1949-11-1 程 ...
- lambda操作DataTable进阶版
using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text; ...
- 温故知新-java多线程&深入理解线程池
文章目录 摘要 java中的线程 java中的线程池 线程池技术 线程池的实现原理 简述 ThreadPoolExecutor是如何运行的? 线程池运行的状态和线程数量 任务执行机制 队列缓存 Wor ...