python内置模块
os模块
创建文件夹
import os os.mkdir(r'文件夹01') # 只能创建单级目录 os.makedirs(r'文件夹02\文件夹03') # 可以创建多级目录 os.makedirs(r'文件夹03')

删除文件夹
import os os.rmdir(r'文件夹01') os.rmdir(r'文件夹02\文件夹03') # 默认只能删一级空目录 os.removedirs(r'文件夹02\文件夹03') # 可以删除多级空目录

查看
import os print(os.listdir()) # 查看指定路径下所有的文件及文件夹 print(os.listdir('D:\\')) # 查看指定路径下所有的文件及文件夹 print(os.getcwd()) # 查看当前所在的路径 os.chdir(r'文件夹03') # 切换当前操作路径 print(os.getcwd()) # 查看当前所在的路径

判别
import os print(os.path.isdir(r'a.txt')) # 判断是否是文件夹 print(os.path.isdir(r'文件夹03')) print(os.path.isfile(r'a.txt')) # 判断是否是文件 print(os.path.isfile(r'文件夹03')) print(os.path.exists(r'a.txt')) # 判断当前路径是否存在 print(os.path.exists(r'文件夹03'))

路径拼接
不同的操作系统的路径分隔符是不一样的,在Windows中是 \ ,mac中是 / 。
res = os.path.join('D:\\','a.txt') # 该方法可以针对不同的操作系统自动切换分隔符
文件大小
输出结果是字节数。
print(os.path.getsize(r'a.txt')) # 字节数

hashlib模块
加密模块
将明文数据按照一定的逻辑变成密文数据,一般情况下密文都是由数字字母随机组合而成。
加密算法
常见加密算法有:md5、base64、hmac、sha系列
这些加密算法将明文数据按照一定逻辑变成密文数据,一般情况下都是数字字母随机组成的。
算法生成的密文越长表示该算法越复杂。
加密
import hashlib
# 选择加密算法:md5
md5 = hashlib.md5()
# 将待加密的数据传入算法中
md5.update(b'hello')
# 获取加密之后的密文
res = md5.hexdigest()
print(res)
# 加盐处理
md5 = hashlib.md5()
# 数据必须是bytes类型(二进制)
md5.update('自己定制的盐'.encode('utf8'))
md5.update(b'hello')
res = md5.hexdigest()
print(res)

除了普通加盐之外,还可以执行动态加盐处理,即加盐是随机生成,并不是固定的。
random模块
产生各种随机效果。
import random # 随机返回0-1之间的小数 print(random.random()) # 随机返回指定区间的整数 包含首尾 print(random.randint(1, 6)) # 随机抽取一个 print(random.choices(['一等奖', '二等奖', '谢谢回顾'])) print(random.choice(['一等奖', '二等奖', '谢谢回顾'])) # 随机抽取指定样本个数 print(random.sample([111, 222, 333, 444, 555, 666, 777], 2)) # 随机打乱元素 l = [2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", "小王", "大王"] random.shuffle(l) print(l)

随机验证码
需求:产生一个五位数随机验证码,每一位都可以是数字或小写字母或大写字母。
import random
def get_code(n):
code = ''
# 循环n次决定是几位验证码
for i in range(n):
# 每一次循环都应该是三选一
# 随机的数字 并转成字符串
random_int = str(random.randint(0, 9))
# 随机的小写字母 chr可以将数字转换成ASCII码表对应的字母
random_lower = chr(random.randint(97, 122))
# 随机的大写字母
random_upper = chr(random.randint(65, 90))
# 随机选择一个作为一位验证码
temp = random.choice([random_int, random_lower, random_upper])
code += temp
return code
# 选择验证码的位数
print(get_code(8))

logging模块
日志级别
import logging
# 日志级别
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

logging模块使用(自行观看)
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('你好')
import time
import logging
from logging import handlers
sh = logging.StreamHandler()
rh = handlers.RotatingFileHandler('myapp.log', maxBytes=1024, backupCount=5)
fh = handlers.TimedRotatingFileHandler(filename='x2.log', when='s', interval=5, 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=[fh, sh, rh],
level=logging.ERROR
)
for i in range(1, 100000):
time.sleep(1)
logging.error('KeyboardInterrupt error %s' % str(i))
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')
json模块
可以简单的理解为:可以将其他数据类型转换成字符串,也可以将字符串转换成其他数据类型。
字符串序列化和反序列化
d = {'username': 'jason', 'pwd': 123}
import json
"""序列化:将其他数据类型转换成json格式的字符串"""
res = json.dumps(d)
print(res, type(res))
# 手动写的""是无效的
d1 = {"username": "jason", "pwd": 123}
print(d1)
"""反序列化:将json格式字符串转换成对应的数据类型"""
res1 = json.loads(res)
print(res1, type(res1))


文件序列化和反序列化
import json
d = {'username': 'jason', 'pwd': 123}
with open(r'a.txt', 'w', 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格式字符串。
在导入json模块后,输入json.encoder,按住CTRL,点击encoder就可以查看相关设定。


浙公网安备 33010602011771号