day33 Pyhton logging 模組和包

2022-08-18 07:54:10 字數 3956 閱讀 7851

一內容回顧

try/except

try/except/else

try/finally

try/except

try/except/finally

try/except/else/finally

報錯的時候

1檢查程式邏輯是不是有問題

2.邏輯沒有問題,但是就是會報錯

找到具體錯誤的那一行**

在這一行**上加上try,再根據錯誤型別進行處理

主動拋異常

raise 異常型別

自定義異常

繼承baseexception

__str__方法的返回值就是這個異常丟擲之後的異常內容

斷言 assert語法,不滿足條件就報錯

hasblib模組

摘要模組:各種各樣的摘要演算法

md5/sha1

兩件事:

1.密碼的密文儲存: 各種演算法 動態加鹽

2.檔案的一致性校驗

md5_obj =hashlib.md5(bytes 鹽)# 建立乙個新的md5值計算的物件

md5_obj.update(bytes) #每一次uodate,相當於在原來的字串後面加上新的字串

md5_obj.hexdigest() #只是獲取最終結果

二今日內容

logging #日誌模組

給使用者看 : 銀行流水\購物記錄

哪乙個管理員什麼時候登陸 刪除了乙個學生

給程式設計師看的 :

計算器 'asjkdghlghljgjl;;' 計算錯誤了

錄下每乙個使用者讓你計算的表示式

記錄下每乙個計算的步驟是怎麼錯的

#

f = open()

#f.write('年月日時分秒 所在的檔案 錯誤的級別 asjhkhkaghkldgh')

#f.close()

#格式不好看 logging模組 這些格式你就不需要反覆寫

#每一次都需要自己開啟檔案\關閉檔案 logging就不需要了

#有一些資訊 能夠控制它在某一寫特定的時刻就列印出來

#

logging模組不能自動幫助你生成日誌,

仍然是你自己寫你想寫的內容

#logging只是幫助你 簡化操作檔案的步驟\按照你的要求規劃日誌等級\幫助你規範格式

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')#批判的 把整個userinfo檔案刪掉了

#預設顯示warning以上的日誌

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',

filemode = '

a'

# 1.作業系統的編碼可能會出現亂碼問題 

# 2.不支援同時向檔案和螢幕輸出

import logging

#logger物件的方式: 靈活性 可擴充套件性

logger = logging.getlogger() #建立乙個logger物件

logger.setlevel(logging.debug)

#建立乙個檔案操作符 來準備操作日誌向檔案中寫這件事

fh = logging.filehandler('mylog.log',encoding='utf-8')

fh2 = logging.filehandler('mylog2.log',encoding='utf-8')

#建立乙個螢幕操作符,來準備操作日誌向螢幕中寫這件事

sh = logging.streamhandler()

#建立乙個輸出格式

formatter = logging.formatter('%(asctime)s%(filename)s[line:%(lineno)d]%(levelname)s %(message)s')

formatter2 = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

#組合#輸出格式和檔案操作符\螢幕操作符綁在一起

fh.setformatter(formatter)

sh.setformatter(formatter2)

sh.setlevel(logging.error)

# logger物件分別和檔案操作符\螢幕操作符綁在一起

logger.addhandler(fh)

logger.addhandler(fh2)

logger.addhandler(sh)

#才開始能夠使用logger來記錄日誌

logger.debug('

debug message')

logger.info(

'info message')

logger.warning(

'warning message')

logger.error(

'error message')

logger.critical(

'critical message

')

三.模組

#

mymodule就是模組

#import mymodule mymodule就是乙個變數了

#

匯入乙個模組相當於什麼???

#執行了這個模組對應的檔案

#並且在執行的過程中 所有的函式名\變數名\類名都會繫結在這個模組中

#

1.開闢了一塊屬於這個模組的空間

#2.讓這個匯入的名字mymodule指向這個空間

#3.執行模組中的**,把所有的名字都儲存在這個空間中

#

模組會被重複匯入麼?不會

#

import mymodule as m

#print(m.name)

#m.read1()

#

as語句的用法

#1.名字很長的時候

#2.相同功能名字不同的幾個模組的相容問題

#

from mymodule import name,read2

#from import 這個語法一旦執行,相當於什麼?

#from import 仍然相當於執行整個檔案

#在from import 的過程中發生了什麼事情?

#1.建立乙個空間

#2.執行模組的** 並且把每乙個變數都放在空間中

#3.建立變數名 = import的名字,並且指向空間中對應的變數

#注意 :

#在寫**的過程中,不要取和匯入的變數名相同的名字,否則會導致匯入的名字不可用

#模組中的變數永遠是獨立的,在內部是獨立的使用的

day33 稀疏陣列

當乙個陣列中大部分元素為0,或者為同乙個值的陣列時,可以使用稀疏陣列來儲存該陣列。稀疏陣列的處理方法是 1 記錄陣列一共有 幾行幾列,有多少個不同的值 2 把具有不同值的元素的行列及值記錄在乙個小規模的陣列中,從而縮小程式的規模 1.遍歷原始的二維陣列,得到有效資料的個數sum 2.根據sum就可以...

day33 Pyhton 常用模組03

一.正規表示式 1.元字元 匹配除換行符以外的任意字元 w 匹配字母或數字或下劃線 s 匹配任意的空白符 d 匹配數字 n 匹配乙個換行符 t 匹配乙個製表符 b 匹配乙個單詞的結尾 匹配字串的開始 匹配字串的結尾 w 匹配非字母或數字或下劃線 d 匹配非數字 s 匹配非空白符 a b 匹配字元a或...

day33 python之多執行緒

1.多執行緒例項 import threading import time import threading import time class mythread threading.thread def init self,num threading.thread.init self self.n...