今日内容
模块
序列化
序列化
将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化
序列化的目的
- 以某种存储形式使自定义对象持久化
- 将对象从一个地方传递到另一个地方
- 使程序更具维护性
序列化与反序列化
json
用于多种语言交互(编程语言通用数据)
内置模块 --> 直接导入使用
import json # 导入json模块
Json模块提供了四种功能:dumps、dump、loads、load
使用json模块, 字典中的键必须由双引号括起来
json.dumps()
将字典对象转换为字符串返回
json.loads()
将字符串对象转换为字典返回
json.dump(dic, file_handle)
将字典转换为字符串写入文件
json.load(file_handle)
从文件中读取字符串转换为字典返回
应用
- 通用数据
- 持久化(文件操作相关)
- dump
- load
pickle
pickle只支持Python
import pickle # 导入pickle模块
pickle模块提供了四种功能: dumps, loads, dump, load
pickle.dumps()
将对象转换为类二进制数据返回
pickle.loads()
将类二进制数据转换为字典返回
pickle.dump(dic, file_handle)
将字典转换为类二进制数据写入文件
_注意: file handle需要mode="wb"
pickle.load(file_handle)
将文件中的类二进制数据读取转换为字典返回
_注意: file handle需要mode="rb"
应用
- 数据传输速度较json快
- 只可应用于Python
shelve
文件+字典操作
import shelve # 导入shelve模块
f = shelve.open("path\file", writeback=True)
类似字典操作
- f[Key] = Value
注: writeback = True # 回写, 若写入失败则重新写入, 直到写入成功
小结
- json最常使用, 前后端分离数据交互
- pickle Python特有, 不常用
- shelve 纯Python建议使用, 简单快捷
random模块
随机数
import random # 导入random模块
random.random()
生成0 - 1之间的随机小数
random.randint(1, 10)
生成起始位置到终止位置的随机整数, 包含首尾
random.randrange(1, 21, 2)
生成起始位置到终止位置的加步进随机数(偶数或奇数, 取决于起始位置), 顾首不顾尾
random.choice(有序数据结构, k=num)
从有序数据结构中随机选择, k可指定个数, 有重复
random.sample(有序数据结构, k=num)
从有序数据结构中随机选择, k可指定个数, 无重复
random.shuffle(有序数据结构)
打乱顺序(洗牌)
应用
- 验证码
- ...
os模块
与当前操作系统交互
import os # 导入os模块
目录相关
os.makedirs("app/a/a/a") * * *
递归创建目录
os.removedirs("app/a/b/c") * * *
递归删除目录, 目录下有内容则不处理
os.listdir() * * * *
查看目录下的内容
os.mkdir("app")
创建单个目录
os.rmdir("app")
删除单个目录, 目录非空则报错, 不处理
文件相关
os.remove() * * * * *
删除文件, 不能恢复
os.rename() * * * * *
修改文件的名字
操作系统相关
os.sep()
获取当前操作系统的路径符号
os.linesep()
获取当前操作系统的换行符
os.pathsep()
获取当前操作系统环境变量的分隔符
os.name()
获取操作系统信息
os.sysytem("dir")
os.popen("dir").read() * * *
在当前目录下下发操作系统指令
注: .read()在此获取信息, 可print
os.environ()
获取当前系统环境变量
路径相关 * * * * *
os.path.abspath() * * * *
获取文件的绝对路径
os.path.split()
将以上获取到的绝对路径分割为目录和文件
os.path.basename() * * *
获取文件的名字
os.path.dirname() * * *
获取文件的目录路径
os.path.exists() * *
判断文件是否存在, 返回True或False
os.path.isabs()
判断是否是绝对路径
os.path.join() * * * * *
路径拼接 软件开发规范 框架
os.stat().st_size * * *
获取文件大小 坑目录
os.path.getsize()
获取路径大小
os.getcwd()
获取工作路径
os.chdir() * * *
切换工作目录 路径切换
注: 绝对路径
节点号:
- 一个点 . 当前目录
- 两个点 .. 父级目录
sys模块
与Python解释器交互
import sys # 导入sys模块
sys.argv() * * *
在cmd中执行, 可以将文件后的内容传递到文件中使用
terminal(cmd)终端使用
sys.argv[-1] 接收cmd方式调用 后边的参数会传递进来
后端开发 127.0.0.1本机ip
sys.path * * * * * *
Python解释器加载路径, 自定义模块添加到此
sys.version
获取解释器版本号
sys.platform
获取当前平台位数
hashlib模块
加密算法
判断一致性
加密后不可逆 不能解 (一年前暴力破解 -- 撞库) (MD5反推)
- 导入模块
- 创建一个加密方式
- 将要加密的内容编码成字节后加密
- 生成密文
import hashlib # 导入hashlib模块
MD5
md5 = hashlib.md5("盐".encode("UTF-8"))
# 选择加密方式(可加盐)
md5.update("明文".encode("UTF-8"))
# 将明文转换为字节然后进行加密
md5.hexdigest()
# 生成密文
SHA1
方法同上
SHA256
方法同上
SHA512
方法同上
总结
- 序列化 * * * * * *
- json * * * *
- pickle
- shelve
- 随机数 * * * *
- random.random() * * * *
- random.randint()
- random.range()
- random.choice()
- random.sample()
- random.shuffer()
- os * * * * * *
- 目录相关 * * * *
- 文件相关 * * * *
- 操作系统相关 * * *
- 路径相关 * * * *
- sys * * * * *
- sys.argv() * * * * *
- sys.path() * * * *
- sys.version()
- sys.platform()
- hashlib * * * * *
- md5 * * * *
- sha1
- sha256 * * * *
- sha512