内置模块
必须强调的是
"""创建.py文件时,文件名不能和模块名冲突"""
os模块是与操作系统交互的模块 import os #文件夹的创建操作 os.mkdir(r'文件夹1') #只能在给定路径下创建单级目录 os.makedirs(r'文件夹2\文件夹3') #可创建多级或单级目录 #文件夹的删除操作 os.rmdir(r'文件夹1') #删除一级空目录 os.rmdir(r'文件夹2\文件夹3') #默认只能删除路径下一级空目录 os.removedirs(r'文件2\文件夹3\文件夹4') #可以删除多级目录,必须确保为空 #查看文件、文件夹 os.listdir() #查看当前目录下所有的文件与文件夹(包括隐藏的) os.listdir('D:\\') #查看制定目录下所有的文件与文件夹(包括隐藏的) os.getcwd() #查看当前所在的路径 os.chdir('C:\\Users') #切换当前所在的路径 #文件、文件夹的判别 返回布尔值 os.path.isdir(r'文件夹1') #判断是否为文件夹 os.path.isfile(r'a.txt') #判断是否为文件 os.path.exists(r'文件夹2\文件夹3') #判断当前路径是否存在 #路径拼接 由于不同操作系统的路径分隔符是不一样的(如Windows系统是\,macOS是/),用简单的字符串拼接文件路径不能很好地兼容不同操作系统。 #拼接路径的函数可有效针对不同操作系统切换路径分隔符 os.path.join('','') #查看文件大小,以字节数为单位 os.path.getsize(r'a.txt')
用于加密的模块
将明文数据按照一定的逻辑编写成密文数据,一般由数字与字母随机组合。 常见的加密算法有md5、base64、hmac、sha系列等。#越长越复杂!!! import hashlib ''' 一般采用md5加密即可,步骤如下 1.将待加密的数据传入算法 2.注意待加密数据必须是二进制即bytes类型(重要) 3.获取加密之后的密文 ''' # 选择加密算法:md5 md5 = hashlib.md5() # 将待加密的数据传入算法 md5.update(b'Ultraman Leo') #获取加密后的密文 res = md5.hexdigest() print(res) #以上加密结果 89e49a1f38fd926b64aa85898a12c3ce #有时需加密的数据过于简单,可能会被对简单常见数据的穷举“破解” #这时需进行加盐处理,即在数据前后拼接额外的干扰数据 md5.update('这是一勺盐'.encode('utf8')) md5.update(b'Ultraman Leo') # 数据必须是bytes类型(二进制) #以上加密结果 8085b7a728082393ef3dbb7360209659 可以看到两次加密结果完全不同,加盐操作还能使用动态数据(例如时间戳)
用于生成随机数的算法
import random #随机返回一个0-1之间的小数 random.random() #比如0.20553977729943185 #掷骰子 random.randint(1,6) #随机返回指定范围的整数,包括首尾 #随机抽取一个选项,可用于抽奖 random.choice(['一等奖','二等奖','谢谢回顾']) #返回单个字符串 random.choices(['一等奖','二等奖','谢谢回顾']) #返回包含选项的列表 #随机抽取多个选项,可指定个数 random.sample(['选项一','选项二','选项3',],个数) #随机打乱元素,可用于洗牌 poker = [3,4,5,6,7,8,9,10,'J','Q','K','smallJoker','largeJoker'] random.shuffle(poker) print(poker)
某搜狗考试题>>>随机验证码:产生一个五位数的验证码,每一位都可以是数字、小写字母、大写字母
```python def getCode(n): code = '' for i in range(n): '''抽取结果需转换成字符串''' #随机抽一个数字 r1 = str(random.randint(0, 9)) #随机抽一个大写字母 r2 = chr(random.randint(65, 90)) #随机抽一个小写字母 r3 = chr(random.randint(97, 122)) #决定是数字还是大写字母还是小写字母 code += random.choice([r1, r2, r3]) return code print(getCode(5)) ```
记录程序运行日志的模块
import logging #日志分为五级 logging.debug('调试信息') logging.info('信息') logging.warning('警告') logging.error('错误') logging.critical('重大错误') #级别最高 默认打印warning级别以上的日志 #初始化日志 logger = logging.getLogger() #创建一个用于将日志信息写入日志文件的处理器 saveLog = logging.FileHandler('test.log',encoding = 'UTF-8') #创建第二个用于将日志信息打印到控制台的处理器 printLog = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelnames) - %message)s') #更改最低输出日志级别为debug saveLog.setLevel(logging.DEBUG) printLog.setLevel(logging.DEBUG) #设置日志格式 saveLog.setFormatter(formatter) printLog.setForrmatter(formatter) #logger对象可以添加多个处理器对象 logger.addHandler(saveLog) logger.addHandler(printLog) #输出日志 logger.debug('debug111') logger.info('info222') logger.warning('warning333') logger.error('error444') logger.critical('critical555')
能实现常用数据类型与字符串的相互转换,用于不同编程语言的交互
import json '''语法结构''' #序列化 json.dumps(变量名) #反序列化 json.loads(变量名) userInfo = {'userName': 'Leo', 'passwd': 'UltramanL77'} 序列化方法常用数据类型转化成json格式字符串 res = json.dumps(userInfo) print(res,type(res)) #打印{"userName": "Leo", "passwd": "UltramanL77"} <class 'str'> '''只有json格式的字符串前后才会有双引号,这是判断是否是json格式的依据''' 反序列化方法能将json格式字符串转化成对应的数据类型 resDic = json.loads(res) print(resDic,ype(res)) #打印{'userName': 'Leo', 'passwd': 'UltramanL77'} <class 'str'> '''序列化能对文件进行''' with open(r'json1.txt','w',encoding='utf8') as f: #将userInfo字典转化成json字符串存放于文件json1.txt中 json.dump(userInfo,f) with open(r'json1.txt','r',encoding='utf8') as f: #将文件json1.txt中的json字符串转化成字典 res = json.load(f) print(res,type(res)) #打印{'userName': 'Leo', 'passwd': 'UltramanL77'} <class 'dict'> '''并不是所有的python数据都能转换成json格式的字符串''' +-------------------+---------------+ | Python | JSON | +===================+===============+ | dict | object | +-------------------+---------------+ | list, tuple | array | +-------------------+---------------+ | str | string | +-------------------+---------------+ | int, float | number | +-------------------+---------------+ | True | true | +-------------------+---------------+ | False | false | +-------------------+---------------+ | None | null | +-------------------+---------------+