python模块之hashlib模块、logging模块、第三方模块

一、hashlib加密模块

1.加密:把明文数据通过一系列算法变成密文数据,目的是为了数据安全。加密之后的密文数据是没有办法反解密变成明文数据的。一般涉及要用户密码存储,都是密文的形式,只有用户知道明文是什么,程序员也无法知道的,如果存储的数据泄露也没办法破解。

2.加密算法:md系列、sha系列、base系列、hmac系列

3.基本使用:import hashlib 常用md5

4.只要明文是相同的,加密后的密文也相同,跟传递方式没有关系。

5.密文越长表示内部对应的算法越复杂,越难被正面破解。算法越复杂需要消耗的资源越多,基于网络发送需要占据的数据也越大。具体使用什么算法要取决于项目,一般来说md5就可以了。

6.加盐处理:在对明文数据做加密处理过程中添加一些干扰项。

7.动态加盐:在对明文数据做加密处理过程中添加一些变化的干扰项。比如当前时间、用户名的一部分,随机字符串等等。

8.校验文件一致性:如果文件特别大的情况下,全部做加密相当耗时耗资源,这时候就可以做切片读取的方式。比特流技术、断电续传技术

import hashlib  # 调用模块
# 1.先确认加密类型,md5常用
md5 = hashlib.md5()
# 2.把明文数据传给加密算法(update只能接受bytes类型的数据)
md5.update('数据'.encode('utf8'))  # 如果是数字或者字母,可以写成md5.update(b'字符')
# 获取加密后的密文数据
res = md5.hexdigest()
print(res)

image
image

image
image
image
image

二、logging日志模块

1.日志记录有五个等级,从上到下重要性越来越高,默认记录的级别在30以上:import logging
logging.debug() # 10
logging.info() # 20
logging.warning() # 30
logging.error() # 40
logging.critical() # 50

2.简单使用:import 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('日志模块很好学 不要自己吓自己')

image

3.如何控制日志的输出位置,不同的位置如何做到不同格式。这时候就需要使用到日志的四大对象了。
1.logger对象:负责产生日志
2.filter对象:负责过滤日志(一般用不上,直接忽略)
3.handler对象:负责日志产生的位置
4.Formatter对象:负责日志的格式

import logging  # 导入模块
# 1.日志对象
logger = logging.getLogger('转账记录')
# 2.handler对象:负责日志产生的位置
hd1  = logging.FileHandler('a1.log', encoding='utf')  # 产生到文件a1
hd2 = logging.FileHandler(r'a2.log', encoding='utf8')  # 产生到文件a2
hd3 = logging.StreamHandler()  # 产生到终端
# 3.负责格式
fm1 = logging.Formatter(
	fmt='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
	datefmt='%Y-%m-%d %H:%M:%S %p',
)
fm2 = logging.Formatter(
	fmt='%(asctime)s - %(name)s %(message)s',
	datefmt='%Y-%m-%d',
)
# 4.把日志绑定handler对象即确认日志对象产生的位置
logger.addHandler(hd1)
logger.addHandler(hd2)
logger.addHandler(hd3)
# 5.绑定格式 formatter对象
hd1.setFormatter(fm1)
hd2.setFormatter(fm2)
hd3.setFormatter(fm1)
# 6.设置日志等级
logger.setLevel(10)
# 8.记录日志
logger.debug('写的啥啊')

image

5.配置字典

import logging
import logging.config

standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
				  '[%(levelname)s][%(message)s]'  # 其中name为 getlogger 指定的名字

simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'

logfile_path = 'a3.log'  # 这里直接定死一个路径了,后续应该用代码获取路径
# log配置字典
LOGGING_DIC = {
	'version': 1,
	'disable_existing_loggers': False,
	'formatters': {
		'standard': {
			'format': standard_format
		},
		'simple': {
			'format': simple_format
		},
	},
	'filters': {},  # 过滤日志
	'handlers': {
		#打印到终端的日志
		'console': {
			'level': 'DEBUG',
			'class': 'logging.StreamHandler',  # 打印到屏幕
			'formatter': 'simple'
		},
		#打印到文件的日志,收集info及以上的日志
		'default': {
			'level': 'DEBUG',
			'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
			'formatter': 'standard',
			'filename': logfile_path,  # 日志文件
			'maxBytes': 1024*1024*5,  # 日志大小 5M
			'backupCount': 5,
			'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
		},
	},
	'loggers': {
		#logging.getLogger(__name__)拿到的logger配置  空字符串作为键 能够兼容所有的日志
		'': {
			'handlers': ['default', 'console'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
			'level': 'DEBUG',
			'propagate': True,  # 向上(更高level的logger)传递
		},  # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置
	},
}


# 使用配置字典
logging.config.dictConfig(LOGGING_DIC)  # 自动加载字典中的配置,用到模块logging.config
logger1 = logging.getLogger('对象名')
logger1.debug('加油')

image

三、第三方模块

1.第三方模块不是python自带的,需要基于网络下载后才能导入使用。

2.下载第三方模块的两种方式:
方式1:命令行借助pip工具 在python解释器文件夹找到这个pip文件夹,把路径添加到操作系统的环境变量中。默认下载源路径是官网
pip3 install 模块名 # 不知道版本号的话默认下载最新版
pip3 install 模块名==版本号 # 指定版本下载
pip3 install -i 仓库地址 # 临时切换下载模块的源路径
想要永久修改下载模块的路径需要修改python解释器源文件
方式2:pycharm快捷方式
settings--project--python interpreter--双击package下面或者有右边的+号--搜索模块名。如果需要切换下载源路径就点manageg管理添加即可。

3.切换下载的源:
pip命令默认下载的渠道是国外的python官网(有时候会非常的慢)
我们可以切换下载的源(仓库)
(1)阿里云 http://mirrors.aliyun.com/pypi/simple/
(2)豆瓣 http://pypi.douban.com/simple/
(3)清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
(4)中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
(5)华中科技大学http://pypi.hustunique.com/

4.下载报错:下载第三方模块可能报错的情况及解决措施
1.报错的提示信息中含有关键字timeout
原因:网络不稳定
措施:再次尝试 或者切换更加稳定的网络
2.找不到pip命令
添加环境变量
3.没有任何的关键字 不同的模块报不同的错
原因:模块需要特定的计算机环境
措施:拷贝报错信息 打开浏览器 百度搜索即可
pip下载某个模块报错错误信息

image
image

posted @ 2021-11-29 17:50  90啊  阅读(47)  评论(0编辑  收藏  举报