ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

3.31python学习笔记

2022-04-18 01:01:03  阅读:188  来源: 互联网

标签:-% md logging python 笔记 对象 3.31 日志 logger


hashlib加密模块

Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。什么是摘要算法呢?摘要算法又称哈希算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串。

#具体使用
import hashlib  
md = hashlib.md5()  # 生成一个具有加密功能的对象
md.update('hello'.encode('utf-8'))  # 往对象里传明文数据  update只能接受bytes类型的数据
md.update(b'hi')  # 往对象里传明文数据  update只能接受bytes类型的数据
print(md.hexdigest())  # 获取明文数据对应的密文
#分多次传入内容,但是生成的密文还是一样的
  1. 不同的算法 使用方法是相同的

    密文的长度越长 内部对应的算法越复杂

    但是

    1. 时间消耗越长
    2. 占用空间更大
  2. 通常情况下使用md5算法 就可以足够了

该类方法虽然与编码与解码相类似,但当明文被加密后是不能被解密的,并且加密的密文也是固定的。所以对于一些简单的明文加密后确实可以进行破解,但是破解方法也是比较暴力的穷举法,一个答案一个答案去验证。

加盐处理

import hashlib

md = hashlib.md5()
# 公司自己在每一个需要加密的数据之前 先手动添加一些内容
md.update(b'oldboy.com')  # 加盐处理
md.update(b'hello')  # 真正的内容
print(md.hexdigest())

动态加盐

import hashlib

def get_md5(data):
	md = hashlib.md5()
	md.update('加盐'.encode('utf-8'))
	md.update(data.encode('utf-8'))
	return md.hexdigest()


password = input('password>>>:')
res = get_md5(password)
print(res)

logging日志模块

日志模块记录程序运行过程中的各种状态。
日志有五个等级
#CRITICAL:
特别糟糕的事情,如内存耗尽、磁盘空间为空,一般很少使用
#ERROR:
发生错误时,如IO操作失败或者连接问题
#WARNING:
发生很重要的事件,但是并不是错误时,如用户登录密码错误
#INFO:
处理请求或者状态变化等日常事务
#DEBUG:
调试过程中使用DEBUG等级,如算法中每个循环的中间状态

具体使用大部分是复制 粘贴

import logging
 
logging.basicConfig(filename='access.log',
                    format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S %p',#p是上下午
                    level=30,#级别,比30大的都会记录
                    )#这么多参数瞄一眼,不需要记住


logging.debug('debug日志')  # 10
logging.info('info日志')  # 20
logging.warning('warning日志')  # 30
logging.error('error日志')  # 40
logging.critical('critical日志')  # 50

(简单的日志)使用流程:8步

  • logger对象:负责产生日志。logger.getLogger()方法填写日志的名字
  • filter对象:过滤日志(了解)
  • handler对象:控制日志输出的位置(存放到文件/终端)可以有多个
  • formmater对象:规定日志内容的格式。
  • 给logger对象绑定handler对象:addHandler()
  • 给handler绑定输出格式(formmate).setFmatter()方式
  • 设置日志等级.setLevel()
  • 写日志.debug()
import logging
# 1.logger对象:负责产生日志
logger = logging.getLogger('程序功能说明')
# 2.filter对象:过滤日志(了解)
# 3.handler对象:控制日志输出的位置(文件/终端)
hd1 = logging.FileHandler('a.log',encoding='utf-8')  # 输出到文件中
hd2 = logging.StreamHandler()  # 输出到终端
 
# 4.formmater对象:规定日志内容的格式
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',
)
 
# 5.给logger对象绑定handler对象。即给logger对象指定输出位置
logger.addHandler(hd1)
logger.addHandler(hd2)
 
# 6.给handler绑定formmate对象。即给输出位置绑定输出内容的格式
hd1.setFormatter(fm1)
hd2.setFormatter(fm2)
 
# 7.设置日志等级
logger.setLevel(10)
 
# 8.记录日志
logger.debug('运行开始')

标签:-%,md,logging,python,笔记,对象,3.31,日志,logger
来源: https://www.cnblogs.com/zq0408/p/16158022.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有