1、什麼是包
包是模組的一種形式,包的本質就是乙個含有__init__.py檔案的資料夾
2.為什麼要有包
因為如果我們要把我們寫的一大堆功能分類處理,並且數量眾多,我們需要進行分檔案儲存,則需要用到包的概念
3、如何用包
匯入包就是在包下的__init__.py
import ...
from ... import ...
注意的問題:
1、包內所有的檔案都是被匯入使用的,而不是被直接執行的
2、包內部模組之間的匯入可以使用絕對匯入(以包的根目錄為基準)與相對匯入(以當前被匯入的模組所在的目錄為基準)
推薦使用相對匯入
3、當檔案是執行檔案時,無法在該檔案內用相對匯入的語法
只有檔案被當作模組匯入時,該檔案內才能使用相對匯入的語法
4、凡是在匯入時帶點的,點的左邊都必須是乙個包
import aaa.bbb.m3.f3 #錯誤
日誌模組
進行基本的日誌配置(了解)
logging.basicconfig(filename='access.log'日子級別遵循原則:自下而上進行匹配 # debug->info->warning->error->critical,format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s'
,datefmt='%y-%m-%d %h:%m:%s %p'
,level=10
,# stream=true
)
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...