蛻變,第二十八天

2021-08-20 20:15:01 字數 2735 閱讀 5532

1、什麼是包

包是模組的一種形式,包的本質就是乙個含有__init__.py檔案的資料夾

2.為什麼要有包

因為如果我們要把我們寫的一大堆功能分類處理,並且數量眾多,我們需要進行分檔案儲存,則需要用到包的概念

3、如何用包

匯入包就是在包下的__init__.py

import ...

from ... import ...

注意的問題:

1、包內所有的檔案都是被匯入使用的,而不是被直接執行的

2、包內部模組之間的匯入可以使用絕對匯入(以包的根目錄為基準)與相對匯入(以當前被匯入的模組所在的目錄為基準)

推薦使用相對匯入

3、當檔案是執行檔案時,無法在該檔案內用相對匯入的語法

只有檔案被當作模組匯入時,該檔案內才能使用相對匯入的語法

4、凡是在匯入時帶點的,點的左邊都必須是乙個包

import aaa.bbb.m3.f3 #錯誤

日誌模組

進行基本的日誌配置(了解)

logging.basicconfig(filename='access.log'

,format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s'

,datefmt='%y-%m-%d %h:%m:%s %p'

,level=10

,# stream=true

)

日子級別遵循原則:自下而上進行匹配 # debug->info->warning->error->critical

logging.debug('

除錯資訊

') #10

logging.info('

正常資訊

') #20

logging.warning('

不好啦著火啦

') #30

logging.error('

報錯資訊

') #40

logging.critical('

嚴重錯誤資訊

') #50

這樣運用日誌模組遇到的問題:

1、沒有指定日誌級別

2、沒有指定日誌格式

3、只能往螢幕列印,沒有寫入檔案

4、不能指定字元編碼

5、只能在檔案中列印

寫日子格式的7個過程:

1、logger:負責產生日誌資訊

2、filter:負責篩選日誌(目前不需要了解)

3、formatter:控制日誌輸出格式

4、handler:負責日誌輸出的目標

5、繫結logger物件與handleer物件

6、繫結handler物件與formatter物件

7、設定日誌級別,可以在兩個關卡進行設定logger與handler

logger1.setlevel(10)

h1.setlevel(10)

h2.setlevel(10)

sm.setlevel(10)

日誌的模板設定:

"""logging配置

"""import os

import logging.config

# 定義三種日誌輸出格式 開始

standard_format = '[%(asctime)s][%(threadname)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \

'[%(levelname)s][%(message)s]' #其中name為getlogger指定的名字

******_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'

id_******_format = '[%(levelname)s][%(asctime)s] %(message)s'

# 定義日誌輸出格式 結束

logfile_dir = os.path.dirname(os.path.abspath(__file__))  # log檔案的目錄

logfile_name = 'all2.log'  # log檔名

# 如果不存在定義的日誌目錄就建立乙個

if not os.path.isdir(logfile_dir):

os.mkdir(logfile_dir)

# log檔案的全路徑

logfile_path = os.path.join(logfile_dir, logfile_name)

# log配置字典

logging_dic = ,

'******': ,

},'filters': {},

'handlers': ,

#列印到檔案的日誌,收集info及以上的日誌

'default': ,

},'loggers': ,},}

def load_my_logging_cfg():

logging.config.dictconfig(logging_dic)  # 匯入上面定義的logging配置

logger = logging.getlogger(__name__)  # 生成乙個log例項

logger.info('it works!')  # 記錄該檔案的執行狀態

if __name__ == '__main__':

load_my_logging_cfg()

logging配置檔案

第二十八天

1 建立乙個名稱為itcast的資料庫。create database itcast 2 設計資料表tb student的字段結構,欄位有id 學號 name 姓名 age 年齡 enrolmentdate 入學時間 並選擇適合的資料型別。tb student資料表的字段結構如下表所示 欄位名 型別...

冥想第二十八天

今天5點多就不困了,天氣有點冷,醒了。告訴自己,都是正常的。確實是正常的。都是人最直觀的感受。改變固有思維,以前會聯想很多造成的,讓自己越來越膽小。可這一切都是那麼的正常。固定的生物鐘也改起了。一切放輕鬆。不怪以前的自己,畢竟自己一天比一天好。多學習別人身上的優點,不狹隘。不能因為環境冷了,而埋怨自...

第二十八天 redis

nosql資料庫 非關係型資料庫 儲存在記憶體中 速度超快 key value 八種資料型別 常用的有五種資料型別 單個key最大支援到512m redis有 0 15號 庫 也就是說 16個庫 預設 0號庫 埠號 6379 編譯安裝 原始碼安裝 麻煩 但是效能優於 apt get安裝 用c 和 c...