python 常用模块
强调
文件名不要和模块名重复
os模块
功能:
1.创建文件夹
2.删除文件夹
3.查看
4.判断
5.路径拼接
6.文件大小
创建文件夹
# 在同级目录下创建 单级目录 os.mkdir(r'文件夹1') # 可以创建多节文件夹 os.makedirs(r'文件夹2\文件夹3') # 也可以创建单级文件夹 os.makedirs(r'文件夹03')
删除文件夹
os.rmdir(r'文件夹1') # 报错,默认只能删除一级空目录 os.rmdir(r'文件夹02\文件夹03') # 删除多节目录,目录必须为空 os.removedirs(r'文件夹02\文件夹03\文件夹04')
查看
# 查看当前路径下所有文件夹 print(os.listdir()) # 查看指定路径下所有文件夹 print(os.listdir('D:\\')) # 查看当前所在的路径 print(os.getcwd()) # 切换当前操作路径 os.chdir(r'路径')
判断
#结果输出为布尔值 # 判断是否为文件 print(os.path.isdir(r'文件名.txt')) # 判断是否为文件夹 print(os.path.isfile(r'文件夹名')) # 判断当前路径是否存在 print(os.path.exists(r'路径') )
路径拼接
# 该方法可以针对不同的操作系统会自动切换分割符 res = os.path.join('D:\\',' ') ''' 各操作系统的路径分隔符不一样 windows: \ mac: / '''
文件大小
# a 内容为 'hello日' # 输出8 判断文件大小 输出为字节数 print(os.path.getsize(r.'a.txt' ))
random模块
功能:
1.随机数
2.随机选择
3.随机抽样
4.随机打乱
5.小练习
随机数
# 随机输出1到6数字 print(random.randint(1,6))
随机选择
# 随机抽取一个 print(random.choice(['1','2','TT'])) print(random.choices(['1','2','TT']))
随机抽样
#样本有指定个数 #输出一个元素个数为3的随机数列 print(random.sample([111,22,4,5,6,78,13,4],3))
随机打乱
# 随机打乱元素 l=[1,23,4,53,543,62,53] random.shuffle(l) # 随机打乱序列,洗牌 print(l) # 输出为打乱的元素
小练习
''' 产生一个五位数随机验证码 每一位都可以是数字\小写字母\大写字母 ''' import random l = '' for i in range(5):
# 0到9随机数 rand1=str(random.randint(0,9))
# A到Z随机字母 rand2=chr(random.randint(65,90))
# a到z随机字母 rand3=chr(random.randint(97,122)) rand4= random.choice([rd3,rd2,rd1]) l += rand4 print(l)
hashlib模块
加密模块
将明文数据通过一定逻辑变成密文数据,由数字和字符随机组成
加密算法
将明文数据按照一定的逻辑(每个算法内部逻辑都不一样)
加密之后的密文不能反解密出文明
功能:
1.加密
2.加盐处理
3.动态加盐处理
加密
# 选择加密算法 md5 = hashlib.md5() # 将代加密的数据传入算法 # 数据必须是bytes类型(二进制) md5.update(b'hello 123') # 获取加密后的密文 res=md5.hexdigest()
加盐处理
在对数据加密之前再添加干扰数据
# 选择加密算法 md5 = hashlib.md5() md5.update('自己定制的盐'.encode('utf8')) # 数据必须是bytes类型 md5.update(b'hello') # 获取加密后的密文 res = md5.hexdigest() # 输出加密后的密文 print(res)
动态加盐
# 选择加密算法 md5 = hashlib.md5() # 将待加密的数据传入算法中 actx=input('动态数据:') md5.updat(actx.encode('utf8')) md5.update(b'hello') res = md5.hexdigest() print(res)
加密补充
''' 数据必须是bytes类型 加密算法一般采用md5即可 生成密文越长表示该算法越复杂 常见算法:md5 base64 hmac sha系列 '''
logging模块
功能
该模块主要运用于监控监管等
日志级别
logging.debug() # 调试 logging.info() # 通知 logging.warning() # 警告 logging.error() # 出错 logging.critical() # 严重事故 等级最高
级别大小(从左到右,由大到小):
debug < info < warming < error < critical
实例1
eg:
import logging # 开始初始化()内可以不写 logger = logging.getLogger() # 创建一个handler,用于写入日志文件 fh = logging.FileHandler('test.log',encoding='utf-8') # 创建一个handler,用于输出日志文件 ch = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setLevel(logging.DEBUG) fh.setFormatter(formatter) ch.setFormatter(formatter) logger.addHandler(fh) #logger对象可以添加多个fh和ch对象 logger.addHandler(ch) logger.debug('logger debug message') logger.info('logger info message') logger.warning('logger warning message') logger.error('logger error message') logger.critical('logger critical message')
实例2
import logging
# 创建 file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8',) logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', handlers=[file_handler,], level=logging.ERROR ) logging.error('你好')
json模块
能将其他数据类型转换成字符串
也可将字符串转换成其他数据类型
功能:
1.序列化
2.反序列化
3.文件反序列化和序列化
序列化和反序列化
import json d = {'username':'jj','pwd':123}
语法:
json.dumps(变量) #序列化
json.loads(变量) #反序列化
序列化: 能将其他数据类型转换成json格式的字符串 eg: d = {'username': 'jj', 'pwd': 123} res = json.dumps(d) print(res,type(res)) newd ={"username": "jj", "pwd": 123} print(newd,type(newd)) ''' 只有json合适字符串是双引号 双引号就是判断json格式字符串的重要依据 ''' 反序列化:
将json格式的字符串转换成对应数据类型,必须把整数字符转化为整形
res1 =json.loads(res)
print(res1,type(res1))
文件序列化和反序列化
语法: json.dump(序列化变量,存储目标) #文件序列化 json.load(变量) with open(r'a.txt','a',encoding='utf8') as f: json.dump(d,f) with open(r'a.txt','r',encoding='utf8') as f: res = json.load(f) print(res,type(res))
json格式字符串
可以转化为json格式的字符串
python | Json |
dict | object |
list,tuple | array |
str | string |
int,float | number |
True | true |
False | false |
None | null |