Week6: python 挖坑填坑:常用模块(hashlib,logging,configpaser)
Part 1: hashlib 的三大应用场景:
例1:检验文件的一致性
1 import hashlib 2 md5_obj = hashlib.md5() 3 md5_obj.update(bytes('李李',encoding='utf-8')) 4 md5_obj.update(bytes('李李李',encoding='utf-8')) 5 md5_obj.update(bytes('杰杰杰杰杰',encoding='utf-8')) 6 print(md5_obj.hexdigest()) # 结果同:'李李李李李杰杰杰杰杰'的md5值 7 md5_obj = hashlib.md5() 8 f = open('文章','rb') 9 md5_obj.update(f.read()) 10 print(md5_obj.hexdigest())
例2:ftp传输
1 import os 2 filesize = os.path.getsize('苍老湿') 3 f = open('文章','rb') 4 md5_obj = hashlib.md5() 5 while filesize > 0 : # 对于图片、视频、音乐等文件来说 6 readsize = 1024 if filesize > 1024 else filesize # 每次读1024个字节 7 content = f.read(readsize) 8 md5_obj.update(content) 9 filesize -= readsize 10 print(md5_obj.hexdigest())
例3:密文处理
1 f = open('userinfo','w') 2 md5 = hashlib.md5(b'alex') # 加盐 3 md5.update(b'3714') 4 md5_value = md5.hexdigest() 5 f.write('alex|%s\n'%md5_value) 6 f.close() 7 pwd = input('pwd : ') 8 f = open('userinfo') 9 alex_info = f.readline().strip() 10 user,passwd = alex_info.split('|') 11 md5 = hashlib.md5() 12 md5.update(bytes(pwd,encoding='utf-8')) 13 print(md5.hexdigest()) 14 if passwd == md5.hexdigest(): 15 print('登录成功') 16 17 # md5 单向的,只能摘要成密文,不能反解 18 # 对于一个长字符串分次update的结果和一次update的结果相同
Part 2: logging 模块
例1:
1 import logging 2 logging.basicConfig(level=logging.WARNING, 3 format = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', 4 datefmt='%a, %d %b %Y %H:%M:%S', 5 filename='test.log', 6 filemode='a') 7 logging.debug('debug message') 8 logging.info('info message') 9 logging.warning('warning message') 10 logging.error('error message') 11 logging.critical('critical message')
例2:
1 import logging 2 def log(filename): 3 4 logger = logging.getLogger() 5 logger.setLevel(logging.DEBUG) 6 fh = logging.FileHandler(filename,encoding='utf-8') 7 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 8 fh.setFormatter(formatter) 9 logger.addHandler(fh) 10 11 sh = logging.StreamHandler() 12 formatter2 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 13 sh.setFormatter(formatter2) 14 logger.addHandler(sh) 15 return logger 16 17 logger = log('log') # 既写入到了文件,也输出到了屏幕 18 logger.debug('debug hello') 19 logger.warning('你好')

浙公网安备 33010602011771号