1. 程式人生 > >Python常用的模塊

Python常用的模塊

綁定 代碼 處理 cto 級別 文件中 port pil 格式化

一、logging模塊 1、日誌級別 CRITICAL = 50 #FATAL = CRITICAL ERROR = 40 WARNING = 30 #WARN = WARNING INFO = 20 DEBUG = 10 NOTSET = 0 #不設置 2、默認級別為warning,默認打印到終端 import logging logging.debug(‘調試debug‘) logging.info(‘消息info‘) logging.warning(‘警告warn‘) logging.error(‘錯誤error‘) logging.critical(‘嚴重critical‘) 輸出: WARNING:root:警告warn ERROR:root:錯誤error CRITICAL:root:嚴重critical 3、為logging模塊指定全局配置,針對所有logger有效,控制打印到文件中 可在logging.basicConfig()函數中通過具體參數來更改logging模塊默認行為,可用參數有: filename:用指定的文件名創建FiledHandler(後邊會具體講解handler的概念),這樣日誌會被存儲在指定的文件中。 filemode:文件打開方式,在指定了filename時使用這個參數,默認值為“a”還可指定為“w”。 format:指定handler使用的日誌顯示格式。 datefmt:指定日期時間格式。 level:設置rootlogger(後邊會講解具體概念)的日誌級別 stream:用指定的stream創建StreamHandler。可以指定輸出到sys.stderr,sys.stdout或者文件,默認為sys.stderr。若同時列出了filename和stream兩個參數,則stream參數會被忽略。 #格式 %(name)s:Logger的名字,並非用戶名,詳細查看 %(levelno)s:數字形式的日誌級別 %(levelname)s:文本形式的日誌級別 %(pathname)s:調用日誌輸出函數的模塊的完整路徑名,可能沒有 %(filename)s:調用日誌輸出函數的模塊的文件名 %(module)s:調用日誌輸出函數的模塊名 %(funcName)s:調用日誌輸出函數的函數名 %(lineno)d:調用日誌輸出函數的語句所在的代碼行 %(created)f:當前時間,用UNIX標準的表示時間的浮 點數表示 %(relativeCreated)d:輸出日誌信息時的,自Logger創建以 來的毫秒數 %(asctime)s:字符串形式的當前時間。默認格式是 “2003-07-08 16:49:45,896”。逗號後面的是毫秒 %(thread)d:線程ID。可能沒有 %(threadName)s:線程名。可能沒有 %(process)d:進程ID。可能沒有 %(message)s:用戶輸出的消息 4、logging模塊的Formatter,Handler,Logger,Filter對象 原理圖: 稍後補上 logger:產生日誌的對象 Filter:過濾日誌的對象 Handler:接收日誌然後控制打印到不同的地方,FileHandler用來打印到文件中,StreamHandler用來打印到終端 Formatter對象:可以定制不同的日誌格式對象,然後綁定給不同的Handler對象使用,以此來控制不同的Handler的日誌格式 5、Logger與Handler的級別 logger是第一級過濾,然後才能到handler,我們可以給logger和handler同時設置level,但是需要註意的是: Logger is also the first to filter the message based on a level — if you set the logger to INFO, and all handlers to DEBUG, you still won‘t receive DEBUG messages on handlers — they‘ll be rejected by the logger itself. If you set logger to DEBUG, but all handlers to INFO, you won‘t receive any DEBUG messages either — because while the logger says "ok, process this", the handlers reject it (DEBUG < INFO). 二、re模塊 1、什麽是正則? 正則就是用一些具有特殊含義的符號組合到一起(稱為正則表達式)來描述字符或者字符串的方法。或者說:正則就是用來描述一類事物的規則。(在Python中)它內嵌在Python中,並通過 re 模塊實現。正則表達式模式被編譯成一系列的字節碼,然後由用 C 編寫的匹配引擎執行。 2、常用匹配模式(元字符) http://blog.csdn.net/yufenghyc/article/details/51078107

技術分享圖片

    .*默認為貪婪匹配
    print(re.findall(‘a.*b‘,‘a1b22222222b‘)) #[‘a1b22222222b‘]
    .*?為非貪婪匹配:推薦使用
    print(re.findall(‘a.*?b‘,‘a1b22222222b‘)) #[‘a1b‘]
3、re模塊提供的方法介紹
    import re
    re.findall
    re.search 
    re.match
    re.split
    re.sub
    re.subn
    re.compile
三、time與datetime模塊
1、在Python中,通常有這幾種方式來表示時間:
    時間戳(timestamp):通常來說,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。我們運行“type(time.time())”,返回的是float類型。
    格式化的時間字符串(Format String)
    結構化的時間(struct_time):struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天,夏令時)
         import time
         #我們先以當前時間為準,讓大家快速認識三種形式的時間
         print(time.time()) # 時間戳:1487130156.419527
         print(time.strftime("%Y-%m-%d %X")) #格式化的時間字符串:‘2017-02-15 11:40:53‘ 
         print(time.localtime()) #本地時區的struct_time
         print(time.gmtime())    #UTC時區的struct_time
2、計算機認識的時間只能是‘時間戳‘格式,而程序員可處理的或者說人類能看懂的時間有: ‘格式化的時間字符串‘,‘結構化的時間‘,於是有了下圖的轉換關系

技術分享圖片

localtime([secs])將一個時間戳轉換為當前時區的struct_time。secs參數未提供,則以當前時間為準。
        time.localtime()
        time.localtime(1473525444.037215)
gmtime([secs]) 和localtime()方法類似,gmtime()方法是將一個時間戳轉換為UTC時區(0時區)的struct_time。
mktime(t) : 將一個struct_time轉化為時間戳。
        print(time.mktime(time.localtime()))#1473525749.0 
strftime(format[, t]) : 把一個代表時間的元組或者struct_time(如由time.localtime()和time.gmtime()返回)轉化為格式化的時間字符串。如果t未指定,將傳入time.localtime()。如果元組中任何一個元素越界,ValueError的錯誤將會被拋出。
        print(time.strftime("%Y-%m-%d %X", time.localtime()))#2016-09-11 00:49:56
time.strptime(string[, format])把一個格式化時間字符串轉化為struct_time。實際上它和strftime()是逆操作。
        print(time.strptime(‘2011-05-05 16:37:06‘, ‘%Y-%m-%d %X‘))
time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6,
tm_wday=3, tm_yday=125, tm_isdst=-1)
在這個函數中,format默認為:"%a %b %d %H:%M:%S %Y"。

Python常用的模塊