1、Excel文件處理
安裝 openpxl 第三方庫
openpxl 模塊三大組件:
1、工作簿 (包含多個sheet工作表)
2、工作表?(某個數據包含在某個工作表)
3、單元格
1、創建excel工作簿
import openpyxl"""Excel表格的創建
"""def createExcel():# 創建工作簿wk = openpyxl.Workbook()# 獲取當前工作表sheet = wk.active# 寫數據到單元格sheet.cell(1, 1).value = "username"sheet.cell(1, 2).value = "class"sheet.cell(1, 3).value = "adress"wk.save("userinfo.xlsx")if __name__ == '__main__':createExcel()
run后會生成一個userinfo.xlsx工作簿,內容:
2、讀取工作表
"""2、讀取Excel表格的數據
"""
def readExcel():# 讀取工作簿wk = openpyxl.load_workbook("userinfo.xlsx")# 方式一:獲取工作表sheet1 = wk.get_sheet_by_name("Sheet")# 方式二:獲取工作表# sheet1 = wk["Sheet"]# 獲取單元格坐標locaion = sheet1.cell(1, 1)value = sheet1.cell(1, 1).valueprint(locaion, value)rows = sheet1.max_rowcols = sheet1.max_columnprint(f"工作表行數={rows}, 列數={cols}")
3、編輯工作表
先加載excel表格 然后修改數據后 保存 就ok
2、日志處理
1、日志作用:
問題定位、信息查詢、數據分析
2、內置模塊:logging
logging的四大組件:
1、日志器Logger -- > 入口
2、處理器 Handler ---> 執行者 在哪個端輸出 (日志文件 or 控制臺)
3、格式器 Fomatter 旗幟輸入的內容
4、過濾器 Filter? 輸出感興趣日志信息 過濾掉不感興趣的日志信息
關系:1個日志器可以有多個處理器
每個處理器可以有各自的各時期和過濾器
3、logging模塊的應用
日志級別:
debug? 調試信息
info? 關鍵時間描述? 比如 在什么時間做了什么事情
warning 警告信息
error 錯誤信息
critical? 嚴重錯誤信息
案例1 如下:
import logging# 創建日志器
logger = logging.getLogger("logger")
# 創建控制臺處理器 ---》 日志會輸出在控制臺
SH = logging.StreamHandler()
# 創建文件處理器 ---》 那么日志會輸出到文件里面
FH = logging.FileHandler("log.txt")# 日志包含哪些內容 時間 文件 日志級別 日志信息
formatter = logging.Formatter(fmt="[%(asctime)s][%(filename)s] %(levelname)s : %(message)s",datefmt="%Y/%m/%d %H:%M:%S")
logger.addHandler(SH)
logger.addHandler(FH)
SH.setFormatter(formatter)# 假設有報錯
try:score = int(input("請輸入你的成績"))if score > 60:print("恭喜你通過")else:print("繼續努力")logging.debug("這是一個debug信息")logger.info("你查詢成績成功")logging.warning("這是一個警告信息")except Exception as error:logger.error("輸入不是數字, 錯誤信息:"+str(error))logger.critical("這是一個critical信息")
如果想封裝成一個方法的話, 如下
import loggingclass FrameLog:def getLogger(self):# 創建日志器logger = logging.getLogger("logger")logger.setLevel(logging.INFO)# 如果沒有處理器if not logger.handlers:# 創建控制臺處理器 ---》 日志會輸出在控制臺SH = logging.StreamHandler()# 創建文件處理器 ---》 那么日志會輸出到文件里面FH = logging.FileHandler("log.txt")# 日志包含哪些內容 時間 文件 日志級別 日志信息formatter = logging.Formatter(fmt="[%(asctime)s][%(filename)s] %(levelname)s : %(message)s",datefmt="%Y/%m/%d %H:%M:%S")logger.addHandler(SH)logger.addHandler(FH)SH.setFormatter(formatter)return loggerdef sum_two(self, x, y):"""求多個數之和:param args::return:"""sum_two = 0try:sum_two = x + yself.getLogger().info(f"計算2個數之和={sum_two}")return sum_twoexcept Exception as error:self.getLogger().error("計算2個數之和有異常:\n"+str(error))def sum(self, *args):"""求多個數之和:param args::return:"""try:sum = 0for num in args:sum+=numexcept Exception as error:self.getLogger().error("計算多個數之和有異常:\n"+str(error))self.getLogger().info(f"計算多個數之和={sum}")return sumif __name__ == '__main__':FrameLog().sum(9,2,3)FrameLog().sum_two(1,2)