序列化、模块 day21
一 序列化
什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。
字典示例
import json d={'a':1,'b':2} ret = json.dumps(d)#序列化 print(ret,type(ret)) dic=json.loads(ret)#反序列化 print(dic,type(dic))
列表示例
import json d=['a',1,'b','2'] ret = json.dumps(d)#序列化 print(ret,type(ret)) dic=json.loads(ret)#反序列化 print(dic,type(dic))
json dump load 文件句柄的事例
import json data = {'a':['1','2'],'s':'3','age':16} with open('json_sample','w',encoding='utf-8') as f:json.dump(data,f)#句柄序列化 with open('json_sample','r',encoding='utf-8') as f:print(json.load(f))#句柄反序列化
json & pickle 模块
用于序列化的两个模块
- json,用于字符串 和 python数据类型间进行转换
- pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
import json dic = {'k1':'v1','k2':'v2','k3':'v3'} str_dic = json.dumps(dic) #序列化:将一个字典转换成一个字符串 print(type(str_dic),str_dic) #<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"} #注意,json转换完的字符串类型的字典中的字符串是由""表示的 dic2 = json.loads(str_dic) #反序列化:将一个字符串格式的字典转换成一个字典 #注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示 print(type(dic2),dic2) #<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'} list_dic = [1,['a','b','c'],3,{'k1':'v1','k2':'v2'}] str_dic = json.dumps(list_dic) #也可以处理嵌套的数据类型 print(type(str_dic),str_dic) #<class 'str'> [1, ["a", "b", "c"], 3, {"k1": "v1", "k2": "v2"}] list_dic2 = json.loads(str_dic) print(type(list_dic2),list_dic2) #<class 'list'> [1, ['a', 'b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}] loads和dumps
loads和dumps
import json f = open('json_file','w') dic = {'k1':'v1','k2':'v2','k3':'v3'} json.dump(dic,f) #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件 f.close()f = open('json_file') dic2 = json.load(f) #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回 f.close() print(type(dic2),dic2)load和dump
load和dump
import json data = {'username':['李华','二愣子'],'sex':'male','age':16} json_dic2 = json.dumps(data,sort_keys=True,indent=2,separators=(',',':'),ensure_ascii=False) print(json_dic2)
json的格式化输出
pickle模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化)
import pickle dic = {'k1':'v1','k2':'v2','k3':'v3'} str_dic = pickle.dumps(dic) print(str_dic) #一串二进制内容 dic2 = pickle.loads(str_dic) print(dic2) #字典import time struct_time = time.localtime(1000000000) print(struct_time) f = open('pickle_file','wb') pickle.dump(struct_time,f) f.close()f = open('pickle_file','rb') struct_time2 = pickle.load(f) print(struct_time2.tm_year)
pickle
这时候机智的你又要说了,既然pickle如此强大,为什么还要学json呢?
这里我们要说明一下,json是一种所有的语言都可以识别的数据结构。
如果我们将一个字典或者序列化成了一个json存在文件里,那么java代码或者js代码也可以拿来用。
但是如果我们用pickle进行序列化,其他语言就不能读懂这是什么了~
所以,如果你序列化的内容是列表或者字典,我们非常推荐你使用json模块
但如果出于某种原因你不得不序列化其他的数据类型,而未来你还会用python对这个数据进行反序列化的话,那么就可以使用pickle
二 模块
1 什么是模块?
常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。
但其实import加载的模块分为四个通用类别:
1 使用python编写的代码(.py文件)
2 已被编译为共享库或DLL的C或C++扩展
3 包好一组模块的包
4 使用C编写并链接到python解释器的内置模块
2 为何要使用模块?
如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script。
随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用,
3.如何使用模块?
3.1 import
示例文件:自定义模块my_module.py,文件名my_module.py,模块名my_module
在一行导入多个模块 import sys,os,re
3.2 from ... import...
对比import my_module,会将源文件的名称空间'my_module'带到当前名称空间中,使用时必须是my_module.名字的方式
而from 语句相当于import,也会创建新的名称空间,但是将my_module中的名字直接导入到当前的名称空间中,在当前名称空间中,直接使用名字就可以了、
from my_module import read1,read2
rom ... import...也支持as
from my_module import read1 as read
也支持导入多行
from my_module import (read1, read2,money)
转载于:https://www.cnblogs.com/chongdongxiaoyu/p/8494789.html
序列化、模块 day21相关推荐
- 4-20模块 序列化模块 hashlib模块
1,模块,py文件就是模块,py之所以好用就是模块多. 2,模块的分类: 1,内置模块,python 安装时自带的模块 2,扩展模块,别人写好的,需要安装之后,可以直接使用.itchat微信模块, b ...
- python中常用的序列化模块_第六章 常用模块(5):python常用模块(序列化模块:pickle,json,shelve,xml)...
6.3.7 序列化模块 (pickle,json,shelve,xml) 文件写入,数据传输时,我们都是以字符串形式写入的(因为字符串可以encode成bytes). 那其他类型(比如字典,列表等)想 ...
- python sys模块讲解_python模块之sys模块和序列化模块(实例讲解)
sys模块 sys模块是与python解释器交互的一个接口 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys. ...
- time、random以及序列化模块
一. time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行" ...
- 模块(sys/os/序列化模块)
sys 模块: sys.path 返回模块的搜索路径,初始化时使用pythonpath环境变量的值 sys.modules 返回所有在当前这个python程序中导入的模块的 sys.exit ...
- 序列化模块和hashlib模块
一:序列化模块 1,什么叫序列化? 序列化就是将原本的字典.列表等内容转换成一个字符串.python中的序列化模块有 json,pickle,shelve. ps:能存储在文件中的一定是字符串或者是字 ...
- python序列化模块struct_Python-序列化模块-json-62
序列化模块 什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现在我们能想到的方法就是存 ...
- python内置json模块_python的常用内置模块之序列化模块json
#什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. '''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现在我们能想到的方法就是存在文 ...
- os模块,序列化模块,json模块,pickle模块
OS模块 把路径中不符合规范的/改成操作系统默认的格式 1 path = os.path.abspath("D:\dayday\day 19\3.py") 2 print(path ...
- python 序列化模块_Python进阶-XII serialize(序列化)、序列化模块
一.serialize 序列化 1.什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现 ...
最新文章
- Linux服务器上线时间,查看linux服务器时间
- Modelsim仿真流程
- Qt::WindowModal和Qt::ApplicationModal的区别
- 潘多拉设置有线中继_避坑指南:购买无线中继器必看
- laravel常用响应操作
- centos ping不通内网 网关 外网 域名等以解决 通过设置为动态IP(启用dhcp协议)
- asp.net get set用法
- 高性能mysql之慎用BLOB与TEXT
- 网管员应该掌握好的学习方法
- 论文阅读笔记(audio-visual相关)—Co-Separating Sounds of Visual Objects
- .netcore的mysql链接字符串ConnectionString到底应该怎么设置
- 解决联想拯救者打开AMD Radeon Software弹出“The version of AMD Radeon Software ......”框问题
- 【Python】伪距单点定位
- 超详细Tarjan算法总结,求强连通分量,割点,割边,有重边的割边
- echarts 堆叠柱状图label显示总和
- p2p终结者破解版下载 4.15 2011最新版
- 张一鸣:我这7年来的人生感悟
- word不能读出html表格,Word表格不能输入文字的几种情况
- 什么是CDN?CDN的原理和作用是什么?
- 序贯概率比检验法matlab编程,序贯概率比检验
热门文章
- Nginx中间件web服务安装
- IOS --xcode删除Provisioning Profiles文件
- php imagick
- 《Effective Java读书笔记》--通用程序设计
- ZOJ-2575 Full of Painting 动态规划
- EIGRP路由汇总与安全性配置
- 淘宝双12惊喜——“寻”千兆,万兆光模块等你来
- ubuntu安装ssh无法连接解决日志(已解决,可连接)-转
- [Java] 1015. Reversible Primes (20)-PAT甲级
- PAT 1066. 图像过滤(15)-乙级