一.序列化

将原本的字典,列表等内容转化成一个字符串的过程就是序列化。

序列化的目的:

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 模块的更多相关文章

  1. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  2. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  3. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  4. Python标准模块--ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

  5. Python标准模块--Unicode

    1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...

  6. Python标准模块--Iterators和Generators

    1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...

  7. 自己实现一个javascript事件模块

    nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...

  8. 理解nodejs模块的scope

    描述 原文档地址:https://docs.npmjs.com/misc/scope 所有npm模块都有name,有的模块的name还有scope.scope的命名规则和name差不多,同样不能有ur ...

  9. nodejs模块发布及命令行程序开发

    前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...

随机推荐

  1. flink source code

    https://github.com/apache/flink/tree/master/docs https://github.com/flink-china/1.6.0 https://github ...

  2. 【IOS】java 与oc之间的比较

    Cocoa是什么,Cocoa是使用OC语言编写的工具包,里面有大量的类库.结构体,其实就相当于java中的标准API.C++中的标准库.OC中没有命名空间的概念,所以使用加前缀来防止命名冲突,因此你会 ...

  3. docker内程序如何读取dockerfile和compose.yml中设置的环境变量

    docker内程序如何读取dockerfile和compose.yml中设置的环境变量 背景 compose文件中配置了服务A和服务B,其中B服务调用了A服务的接口,那么B的实现代码中该如何调用A的服 ...

  4. Node入门教程(13)第十一章:mocha单元测试+should断言库+istanbul覆盖率测试+art-template

    声明:以下为老马的全栈视频教程的笔记,如果需要了解详情,请直接配合视频学习.视频全部免费,视频地址:https://ke.qq.com/course/294595?tuin=1eb4a0a4 node ...

  5. Node入门教程(9)第七章:NodeJs的文件处理

    Node的文件处理涉及到前面说的ptah模块,以及fs文件系统.stream流处理.Buffer缓冲器等模块.内容可能比较多,相关内容请以官网文档为主,此处主要以案例讲解为主,分享给大家一些常用的经典 ...

  6. 教你一招:Microsoft Office Word已停止工作

    1/按组合键WIN+R打开运行对话框 2/在打开框中键入%USERPROFILE%\AppData\Roaming\Microsoft\Templates,单击“确定”按钮 3/在打开的窗口鼠标右键删 ...

  7. 第三百九十四节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置2,以及目录结构说明

    第三百九十四节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置2,以及目录结构说明 设置后台列表页面可以直接修改字段内容 在当前APP里的adminx.py文件里的 ...

  8. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  9. 三、主流区块链技术特点及Hyperledger Fabric V1.0版本特点

    一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...

  10. [Optimization] Greedy method

    Given two sequences of letters A and B, find if B is a subsequence of A in thesense that one can del ...