day0319 模块
一.序列化
将原本的字典,列表等内容转化成一个字符串的过程就是序列化。
序列化的目的:
1.以某种存储形式使自定义对象持久化
2.将对象从一个地方传递到另一个地方。
3.程序更具有维护性
二. Json 模块
四个功能:dumps dump loads load
2.1 dumps 序列化:将字典转化成字符串,只完成了序列化为str
import json
dic={'key1':123456,'key2':'ada lace'}
j_dic=json.dumps(dic) #序列化:将字典转化成一个字符串
print(j_dic,type(j_dic))
结果:
{"key1": 123456, "key2": "ada lace"} <class 'str'>
#注意:json转换完的字符串类型的字典内的字符串是由“” 表示的。
2.2 loads 反序列化
import json
dic={'key1':123456,'key2':'ada lace'}
j_dic=json.dumps(dic) #序列化:将字典转化成一个字符串
print(j_dic,type(j_dic)) #下面是loads反序列化:
dic1=json.loads(j_dic)
print(dic1,type(dic1)) #反序列化:将一个字符串转化成一个字典
#这里注意:要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示
结果:
{"key1": 123456, "key2": "ada lace"} <class 'str'>
{'key1': 123456, 'key2': 'ada lace'} <class 'dict'>
2.3 dump :必须传文件描述符,将序列化str保存到文件中。
a={"name":'Ada lace',"age":19,'sex':'female'}
with open('demo.json','w',encoding='utf-8') as f:
f.write(json.dumps(a,indent=4)) #在这里是用dumps 将文件转化成str,再用f.write写入文件
json.dump(a,f,indent=4) #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
2.4 load:只接受文件描述符,完成了读取文件和反序列化。
with open('demo.json','r',encoding='utf-8')as f:
a=json.loads(f.read()) #将字符串转化成字典,f..read()读取文件
f.seek(0) #将光标调到开头,否则下次读不到数据。
b=json.load(f) #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
print(a)
print(b)
结果:
{'name': 'Ada lace', 'age': 19, 'sex': 'female'}
{'name': 'Ada lace', 'age': 19, 'sex': 'female'}
三.pickle模块
json:用于字符串 和 python数据类型间进行转换。 pickle:用于python特有的类型 和 python的数据类型间进行转换 。
pickle模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化)
pickle是python特有的模块.
如果我们将一个字典或者序列化成了一个json存在文件里,那么java代码或者js代码也可以拿来用。 但是如果我们用pickle进行序列化,其他语言就不能读懂这是什么了~
3.1 dumps和loads
import pickle
# print(pickle.dumps({'1':4})) #将对象转换成类似二进制的东西
# print(pickle.loads(b'\x80\x03}q\x00X\x01\x00\x00\x001q\x01K\x04s.'))
# 将一个堆类似于二进制的东西转换成字典
3.2 dump和load
pickle.dump({'2':4},open('b','wb'))
d = pickle.load(open('b','rb'))
print(d)
总结:
josn,pickle 对比
# loads json里的将字符串转换成字典 pickle 将字节转换成字典
# dumps json里的将字典转换成字符串 pickle 将字典转换成字节
# load json里的将文件中的字符串转换成字典 pickle 将文件中的字节转换成字典
# dump json里的将字典转换字符串写入到文件中,pickle 将字典转换成字节写入到文件中
四.random模块
random是一个随机数模块,生成一些不规范的内容。
获取0-1之间的随机小数
import random print(random.random())
我们可以获取0到1之间的随机的小数,但是还能够满足你,你想要生成指定的数字内的随机小数怎么办??
import random print(random.uniform(1,5))
随机生成整数:
import random print(random.randint(1,5))# 整数1到整数4
随机生成奇数和偶数:
import random print(random.randrange(1,5,2)) #随机生成1-5的奇数 print(random.randrange(0,5,2)) #随机生成0-5的偶数
choice() 方法返回一个列表,元组或字符串的随机项
import random lst = ['张开','宝元','佩奇','太白'] print(random.choices(lst,k=2))
这里可能生成一样的随机项,去除随机项,我们选择sample函数
import random lst = ['张开','宝元','佩奇','太白'] print(random.sample(lst,k=2))
shuffle() 方法将序列的所有元素随机排序
import random list = [20, 16, 10, 5];
random.shuffle(list)
print "随机排序列表 : ", list random.shuffle(list)
print "随机排序列表 : ", list
结果:
随机排序列表 : [16, 5, 10, 20]
随机排序列表 : [16, 5, 20, 10]
五.os 模块
os模块是与操作系统交互的一个接口
<em>#和文件夹相关
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
# 和文件相关
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
# 和操作系统差异相关 os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/" os.linesep 输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n" os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为: os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
# 和操作系统差异相关 os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/" os.linesep 输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n" os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为: os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
# 和执行系统命令相关
os.system("bash command") 运行shell命令,直接显示
os.popen("bash command).read() 运行shell命令,获取执行结果
os.environ 获取系统环境变量
#path系列,和路径相关 os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值,即os.path.split(path)的第二个元素。 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False os.path.isabs(path) 如果path是绝对路径,返回True os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 os.path.getsize(path) 返回path的大小<br></em>
六.sys 模块
sys模块是与python解释器交互的一个接口
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1) sys.version 获取Python解释程序的版本信息 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称
day0319 模块的更多相关文章
- npm 私有模块的管理使用
你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- Python标准模块--ContextManager
1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...
- Python标准模块--Unicode
1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...
- Python标准模块--Iterators和Generators
1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...
- 自己实现一个javascript事件模块
nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...
- 理解nodejs模块的scope
描述 原文档地址:https://docs.npmjs.com/misc/scope 所有npm模块都有name,有的模块的name还有scope.scope的命名规则和name差不多,同样不能有ur ...
- nodejs模块发布及命令行程序开发
前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...
随机推荐
- 2.4 Apache Axis2 快速学习手册之XMLBeans 构建Web Service
4. 使用XMLBeans生成服务(通过xml bean 命令将wsdl 文件生成java 代码) 要使用XMLBeans生成服务,请执行以下步骤. 通过在Axis2_HOME / samples / ...
- mac无法访问samba共享 提示输入用户名密码
这时候需要输入mac笔记本的用户名和密码 也可以在samba服务器上增加用用户: # smbpasswd -a user_nameNew SMB password:Retype new SMB pas ...
- 透彻理解Spring事务设计思想之手写实现
前言 事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败.事务具有4个特性:Atomicity(原子性),Consistency(一致性),Isolation(隔离性),D ...
- 大津法---OTSU算法
简介: 大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出.从大津法的原理上来讲,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图像二值化分割后,前景与背景 ...
- IBM CE 错误集之(FNRCS0005E)
// 通过ObjectStore获取所有的StorageArea对象,CEUtil是我封装的一个获取ObjectStore 的工具类 ObjectStore os = CEUtil.getStore( ...
- <时间的玫瑰>读书笔记
投资不需要高等数学,只需要常识和智慧 一个人在市场里的输赢结果,实际上是对他人性优劣的奖惩 投资像孤独的乌龟与时间竞赛 时间是最有价值的资产,我们今天买入的股票不仅仅属于我们自己,它属于整个家族,我们 ...
- centos7环境安装rabbitMQ
使用专业的消息队列产品rabbitmq之centos7环境安装 http://www.cnblogs.com/huangxincheng/p/6006569.html [源码安装,适用GNOME + ...
- 【转】ELK 日志分析系统
大纲: 一.简介 二.Logstash 三.Redis 四.Elasticsearch 五.Kinaba 一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部 ...
- Mysql系列七:分库分表技术难题之分布式全局唯一id解决方案
一.前言 在前面的文章Mysql系列四:数据库分库分表基础理论中,已经说过分库分表需要应对的技术难题有如下几个: 1. 分布式全局唯一id 2. 分片规则和策略 3. 跨分片技术问题 4. 跨分片事物 ...
- csharp中DateTime总结-转
Table of Contents 1 时间格式输出 2 求某天是星期几 3 字符串转换为DateTime 3.1 String->DateTime 的弹性做法 4 计算2个日期之间的天数差 5 ...