hashlib模塊:python
可以把一個字符串數據類型的變量轉換成一個定長的密文的字符串算法
字符串裏的每個字符都是一個十六進制加密
對於同一個字符串,無論這個字符串有多長,只要是相同的,debug
不管在何種環境下,多少次執行,在任何語言中調試
使用相同的算法、相同的手段獲得的結果永遠是同樣的日誌
只要是不一樣的字符串,獲得的結果必定是不一樣的code
字符串---》密文,密文是不可逆的orm
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運算,不影響結果blog
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對象的形式來操做文件夾
一、建立一個logger對象
二、建立一個文件管理操做符
三、建立一個屏幕管理操做符
四、建立一個日誌輸出格式
五、文件管理操做符綁定一個格式
六、屏幕管理操做符綁定一個格式
七、logger對象綁定文件管理操做符
八、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')# 嚴重錯誤