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('你好')

 

posted @ 2017-09-23 22:41  折翼的壕哥  阅读(80)  评论(0)    收藏  举报