标题hashlib模块
加密相关的操作:
在这里插入代码片import hashlib
m=hashlib.md5()
print(m)
m.update('hello world'.encode('utf8'))
print(m.hexdigest()) # 5eb63bbbe01eeed093cb22bb8f5acdc3
m.update('aalex'.encode('utf8'))
print(m.hexdigest())
m2=hashlib.md5()
m2.update('hello worldalex.encode('utf8)')
print(m2.hexdigest())
import hashlib
s=hashlib.sha256()
s.update('hello world'.encode('utf8'))
print(s.hexdigest())
标题logging模块
在这里插入代码片日志模块,logging的日志可以分为 debug(), info(), warning(),
error() and critical() 5个级别,下面我们看一下怎么用。
import logging
logging.bssicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s'
datefmt='%a, %d %b %¥ %H:%M:%S',
filename='/tmp/test.log',
filemode='w')
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
filename:指定的文件名创建FileHandler(后边具体讲解handler的概念),这样日志会被储存的指定的文件中。
filemode:文件打开方式,在指定了filename的使用这个参数,默认值为“a”还可指定为“w”。
stream:用指定的stream创建stream创建streamHandler。还可以指定输出到sys.stdout或者文件,默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。
format:指定handler使用的日志显示格式。
format参数中可能用到的格式化串:
%(name)s logger的名字
%(levelno)s 数字形式的日志级别
%(filenames)s调用日志输出函数的模块的文件名
%(lineno)d调用日志输出函数的语句所在的代码行
%(asctime)s字符串形式的当前时间。默认格式是“2019-11-24 14:05,546”。逗号后面是毫秒
%(message)s 用户输出的信息
logger 模块级别的函数是logging.getlogger([name])(返回一个logger对象,如果没有指定名字将返回root logger)
在这里插入代码片import logging
logger = logging.getlogger()
# 创建一个handler,,用于写入日志文件
fh = logging.fileHandler('test.log')
# 再创建一个handler,用于输出到控制台
ch = logging.streamhandler()
formatter = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - %(levelname)s - %(message)s')
fh.setformatter(formatter)
ch.setformatter(formatter)
logger.addhandler(fh)
logger.addhandler(ch)
logger.setlevel(logging.DEBUG)
logger.debug('logger debug messge')
logger.info('logger info message')
logger.warning('logger waring message')
logger.error('logger error message')
logger.critical('logger critical message')