python 06.11
1.hashlib模块
用途:对字符加密,其实就是一个自定义的字符编码表。
import hashlib
m = hashlib.md5()
m.update(b'123')
print(m.hexdigest())
m.update(b'456')
print(m.hexdigest())
import hmac
m = hmac.new(b'123')
m.update(b'123456')
print(m.hexdigest())
m = hmac.new(b'123123456')
print(m.hexdigest())
import uuid
for i in range(10):
print(uuid.uuid4())
2.logging模块
用途:相当于记录日记,把每一天重要的东西记录下来,但是更多的是记录程序相关的信息。
import logging
logging.debug('调试信息')
logging.info('正常信息')
logging.warning('警告信息')
logging.error('报错信息')
logging.critical('严重错误信息')
V1版本无法指定日志的级别;无法指定日志的格式;只能往屏幕打印,无法写入文件。因此可以改成下述的代码
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',
level=10)
logging.debug('调试信息') # 10
logging.info('正常信息') # 20
logging.warning('警告信息') # 30
logging.error('报错信息') # 40
logging.critical('严重错误信息') # 50
V2缺点,对于不同的项目,需要不同,不灵活;一直往文件中写入,不可控,不能打印;参数全部是固定不变的
import logging
#l.logger对象:负责产生日志,然后交给Filter过滤,然后交给不同的Handler输出
logger = logging.getLogger(‘filename’)
#2.Filter对象,不常用
#3.Handler对象,接受logger传来的日志,然后控制输出
t1 = logging.FileHandler('t1.log') #在文件中打印
t2 = logging.FileHandler('t2.log')
sm = logging.StreamHandler() #往屏幕打印
#4.formatter,控制日志的格式
f1 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p', )
f2 = logging.Formatter('%(asctime)s : %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p', )
f3 = logging.Formatter('%(name)s %(message)s', )
#5.formatter绑定到handler里面去
t1.setFormatter(f1)
t2.setFormatter(f2)
sm.setFormatter(f3)
#6.handler绑定到logger里面去
logger.addHandler(t1)
logger.addHandler(t2)
logger.addHandler(sm)
#7.设置打印级别
logger.setLevel(10)
t1.setLevel(20)
t2.setLevel(30)
sm.setLevel(40)
#8.测试
logger.debug('调试信息')
logger.info('正常信息')
logger.warning('警告信息')
logger.error('报错信息')
logger.critical('严重错误信息')

浙公网安备 33010602011771号