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')# 严重错误

  

 

posted @ 2018-08-09 21:59  浮云遮月  阅读(104)  评论(0编辑  收藏  举报