hashlib模块和logging模块
hashlib模块:
能够把一个字符串数据类型的变量转换成一个定长的密文的字符串
字符串里的每一个字符都是一个十六进制
对于同一个字符串,不管这个字符串有多长,只要是相同的,
无论在何种环境下,多少次执行,在任何语言中
使用相同的算法、相同的手段得到的结果永远是一样的
只要是不同的字符串,得到的结果一定是不同的
字符串---》密文,密文是不可逆的
user=input('账号:')
pwd=input('密码:')
md5_obj=hashlib.md5(user.encode('utf-8'))
md5_obj.update(pwd.encode('utf-8'))
s=md5_obj.hexdigest()
print(s)
采用动态加盐的方式进行密码加密
def comparesize(fp1,fp2):
import hashlib
md5_obj = hashlib.md5()
with open(fp1, 'rb') as f:
while 1:
md5_obj.update(f.read(102400))
if not f.read(102400):
break
c = md5_obj.hexdigest()
md5_obj1 = hashlib.md5()
with open(fp2, 'rb') as f:
while 1:
md5_obj1.update(f.read(102400))
if not f.read(102400):
break
cc = md5_obj1.hexdigest()
if c == cc:
return ('ok')
else:
return ('ng')
s=r'G:\homework\Practice\hashlib练习\1.txt'
s2=r'G:\homework\Practice\hashlib练习\2.txt'
flag=comparesize(s,s2)
print(flag)
对于过大的文件夹,可以进行多次update方式后在进行hexdigest运算,不影响结果
logging模块
功能:日志格式的规范、操作的简化、日志的分级管理
logging不能帮你做的事情:
自动生成你要打印的内容
logging模块的使用:
普通配置型 简单的,可订制化差
对象配置型 复杂的,可订制化强
认识日志分级
import logging
logging.debug('debug message') # 调试模式
logging.info('info message') # 基础信息
logging.warning('warning message') # 警告
logging.error('error message') # 错误
logging.critical('critical message')# 严重错误
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug('debug message') # 调试模式
logging.info('info message') # 基础信息
logging.warning('warning message') # 警告
logging.error('error message') # 错误
logging.critical('critical message')# 严重错误
根据level决定是否现实debug等级内容
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='test.log')
logging.debug('debug message') # 调试模式
logging.info('info message') # 基础信息
logging.warning('warning message') # 警告
logging.error('error message') # 错误
logging.critical('critical message')# 严重错误
不能够将一个log信息既输出到屏幕又输出到文件
解决办法:
创建一个logger对象的形式来操作文件夹
1、创建一个logger对象
2、创建一个文件管理操作符
3、创建一个屏幕管理操作符
4、创建一个日志输出格式
5、文件管理操作符绑定一个格式
6、屏幕管理操作符绑定一个格式
7、logger对象绑定文件管理操作符
8、logger对象绑定屏幕管理操作符
import logging
# 创建一个logger对象
logger = logging.getLogger()
# 创建一个文件管理操作符
fh = logging.FileHandler('logger.log',encoding='utf-8')
# 创建一个屏幕管理操作符
sh = logging.StreamHandler()
# 创建一个日志输出的格式
format1 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 文件管理操作符 绑定一个 格式
fh.setFormatter(format1)
# 屏幕管理操作符 绑定一个 格式
sh.setFormatter(format1)
logger.setLevel(logging.DEBUG)
# logger对象 绑定 文件管理操作符
# logger.addHandler(fh)
# logger对象 绑定 屏幕管理操作符
logger.addHandler(sh)
logger.debug('debug message') # 调试模式
logger.info('我的信息') # 基础信息
logger.warning('warning message') # 警告
logger.error('error message') # 错误
logger.critical('critical message')# 严重错误

浙公网安备 33010602011771号