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 logginglogging.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 logginglogging.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')# 嚴重錯誤
python os模組和hashlib模組
import os os.getcwd def walk dirname for name in os.listdir dirname path os.path.join dirname,name if os.path.isfile path 判斷該路徑是否為乙個正常的檔案 print path e...
PythonStudy 日誌模組 logging
日誌 日之石日常的流水,將程式執行過程中的狀態或資料盡心記錄,一般是記錄到日誌檔案當中的。在正常的專案之中,專案的執行的一些列印資訊,採用logging列印到檔案當中,這個過程就稱作為 日誌記錄模組 以下為預設的操作日誌模組 匯入日誌模組 import logging logging為預設列印者,是...
模組三hashlib模組
加密模組 摘要演算法 一堆加密演算法的集合體 import hashlib 給密碼加密。檔案的校驗。hashlib 將str型別 通過演算法 一串等長度的數字。1,不同的字串 轉化成數字肯定不同。2,相同的字串即使在不同的計算機上只要使用相同的加密方式 轉化成的數字一定相同。3,hashlib加密不...