模块 序列化模块:json pickle
模块:一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀
模块的形象:
内置模块:安装Python解释器的时候一起安装上的
第三方模块(扩展模块):需要自己安装
自定义模块:自己写的py文件
序列化模块 json 与pickle
序列的对象:列表,元组,字符串,bytes
序列化的定义:把一个数据类型转换成字符串,bytes类型的过程
为什么要把数据类型序列化
当你需要把一个数据类型存储在文件中的时候
当你需要把一个数据类型通过网络传输的时候
使用eval() 有风险,所以一般情况下不能使用
json模块:将少量的数据类型转化成字符串的形式
应用场景:
在网络操作中,以及多语言环境中,要传递字典,数字,字符串,列表等简单的数据类型的时候使用。
优点:对于所有语言都通用
缺点:只支持数字,字符串,列表,字典(key值必须是可hash的,即不可变的数据类型)的数据类型
import json
stu = {'name':'何青松','sex':'male'}
ret = json.dumps(stu,ensure_ascii=False) #序列化的过程
#ensure_ascii=False 希望序列化的中文能以中文的形式被现实并且写到文件中
print(ret,type(ret)) #{"name": "何青松", "sex": "male"} <class 'str'> print(stu,type(stu)) #{'name': '何青松', 'sex': 'male'} <class 'dict'> l1 = json.loads(ret) #反序列过程 print(l1,type(l1)) #{'name': '何青松', 'sex': 'male'} <class 'dict'>
import json
方法 dumps() 序列化 loads()反序列化
dumps() dic--->str 序列化方法
loads(str) str----> dic/list 反序列化方法
dump(dic/lis,f) dic/list------->文件,序列化方法
load(f) 文件中-----》dic/list 反序列化方法。可以进行多次dump进入文件中的数据,但是load会报错
参数:ensure_ascii=False 希望序列化的中文能以中文的形式被显示并且写入文件中
pickle 将数据类型转化成bytes类型
与json方法相同,只是转化类型不同
dump与load 操作文件的时候必须以+b打开
在load的时间,如果这个要被load的内容不再内存中,程序会报错的
pickle支持多次dump和多次load (load的时候需要进行异常处理)
import pickle
class Course:
def __init__(self,name,price):
self.name = name
self.price = price
python = Course('python',29800)
linux = Course('linux',25800)
mysql = Course('mysql',18000)
def my_dump(course):
with open('pickle','ab') as f:
pickle.dump(course,f)
my_dump(python)
my_dump(linux)
my_dump(mysql)
with open('pickle','rb') as f:
while True:
try:
content = pickle.load(f)
print(content.name)
except EOFError:
break
模块 序列化模块:json pickle的更多相关文章
- Python全栈之路----常用模块----序列化(json&pickle&shelve)模块详解
把内存数据转成字符,叫序列化:把字符转成内存数据类型,叫反序列化. Json模块 Json模块提供了四个功能:序列化:dumps.dump:反序列化:loads.load. import json d ...
- Python模块:shutil、序列化(json&pickle&shelve)、xml
shutil模块: 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fscr,fdst [, length]) # 将文件内容拷贝到另一个文件中 import shu ...
- 常用模块(random,os,json,pickle,shelve)
常用模块(random,os,json,pickle,shelve) random import random print(random.random()) # 0-1之间的小数 print(rand ...
- 0420模块 序列化模块 hashlib模块
复习:内置方法 __len__ len(obj)的结果依赖于obj.__len__()的结果,计算对象的长度__hash__ hash(obj)的结果依赖于obj.__hash__()的结果,计算对象 ...
- 模块(序列化(json&pickle)+XML+requests)
一.序列化模块 Python中用于序列化的两个模块: json 跨平台跨语言的数据传输格式,用于[字符串]和 [python基本数据类型] 间进行转换 pickle python内置的数据 ...
- python序列化: json & pickle & shelve 模块
一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进 ...
- python 常用模块(一): os模块,序列化模块(json模块 pickle模块 )
1.os模块 2.序列化模块:(1)json模块 和 pickle模块 一.os模块 os.path.abspath: (1)把路径中不符合规范的/改成操作系统默认的格式 import os path ...
- python全栈开发day17-常用模块collections,random,time,os,sys,序列化(json pickle shelve)
1.昨日内容回顾 1.正则表达式 # 正则表达式 —— str # 检测字符串是否符合要求 # 从大段的文字中找到符合要求的内容 1).元字符 #. # 匹配除换行 ...
- day6_python序列化之 json & pickle & shelve 模块
一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进 ...
- 022.Python模块序列化模块(json,pickle)和math模块
序列化模块 一 序列化模块 pickle 1.1 基本认识 序列化:把不能够直接存储的数据变成可存储的过程就是序列化 反序列化:把储存的数据拿出来恢复成原来的数据类型就是反序列化 例如,一个文件不可 ...
随机推荐
- Solution -「JSOI2008」「洛谷 P4208」最小生成树计数
\(\mathcal{Description}\) link. 给定带权简单无向图,求其最小生成树个数. 顶点数 \(n\le10^2\),边数 \(m\le10^3\),相同边权的边数不 ...
- Solution -「CF 1119F」Niyaz and Small Degrees
\(\mathcal{Description}\) Link. 给定一棵 \(n\) 个结点的树,边有边权,对于每个整数 \(x\in[0,n)\),求出最少的删边代价使得任意结点度数不超过 ...
- JNDI漏洞利用探索
最近学习了师傅寻找的一些JNDI漏洞的利用链受益匪浅,自己也尝试关于JNDI漏洞利用做一些挖掘,目前JNDI在利用过程我想到了两个问题. 测试每一个JNDI Bypass 利用链都需要手动更改URL很 ...
- spring中容器和对象的创建流程
容器和对象的创建流程 1.先创建容器 2.加载配置文件,封装成BeanDefinition 3.调用执行BeanFactoryPostProcessor 准备工作: 准备BeanPostProcess ...
- 1. 堪比JMeter的.Net压测工具 - Crank 入门篇
目录 堪比JMeter的.Net压测工具 - Crank 入门篇 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml 堪比JMeter的.Net压测工具 - Crank 进阶篇 ...
- 企业为什么需要BI报表工具?
企业一旦成规模运作起来,数据量是数以万计的,无论数据还是报表都需要协同管理不断更新.面对各大OA\ERP\CRM系统的数据,传统用Excel处理数据效率是很低下的.要想快速出报表,快速取数,快速做业务 ...
- uniapp vue3 $on/$once/$off 的替代方案
仅作参考 仅作参考 仅作参考 并且只支持页面生命周期使用 不支持组件 不支持页面函数方法 下面说了思路需要的话自己添加 今天用到 $once 时发现报错了,原理是vue3移除了该api.我一开始想的是 ...
- 【C# 锁】SpinWait结构 -同步基元|同步原语
锁提供了线程安全三要素中的 有序性.二.SpinWait是同步锁的核心,而Thread是SpinWait的核心. Spinwait结构 完成代码:SpinWait.cs (dot.net) SpinW ...
- 【windows 访问控制】一、访问令牌
访问令牌(Access tokens) 访问令牌是描述进程或线程的安全上下文的对象.令牌中的信息包括与进程或线程关联的用户帐户的标识和特权信息.当用户登录时,系统通过将用户密码与安全数据库(如域认证中 ...
- IDE 、SDK 、API区别、库、框架、组件、CLI
IDE:集成开发环境:包括代码编辑器.代码检测.代码调试器.译器/解释器.以及其他工具 SDK:SDK是IDE的基础引擎 ,比IDE更基本,因为它通常没有图形工具.工程师为辅助开发某类软件的相关文档. ...