logging
日誌是我們排查問題的關鍵利器,寫好日誌記錄,當我們發生問題時,可以快速定位**範圍進行修改
logging將日誌列印到螢幕,日誌級別大小關係為:
critical > error > warning > info > debug > notset,當然也可以自己定義日誌級別
預設logging預設的日誌級別是info
日誌的輸出格式及方式 logging.basicconfig
import logging
logger = logging.getlogger(__name__)
logging.debug('this is debug message')
logging.info('this is info message')
logging.warning('this is warning message')
logging.getlogger([name]):建立乙個日誌物件
返回乙個logger例項,如果沒有指定name,返回root
logger,只要name相同,返回的logger例項都是同乙個而且只有乙個,即name和logger例項是一一對應的。這意味著,無需把logger例項在各個模組中傳遞。只要知道name,就能得到同乙個logger例項。
logging.getlogger(name) 在上述例項中__name__就指的是__main__。
os模組
可以通過os模組呼叫系統命令,獲得路徑,獲取作業系統的型別等都是使用該模組。
a、通過os 獲取系統型別:os.name()
import os
print(os.name)
b、執行系統命令:
os.system('命令') 只會呼叫系統的命令
os.popen('命令') os.popen方法,os.popen()返回的是乙個file物件
c、目錄和檔案相關操作
os.getcwd() : 獲取路徑
os.chdir() : 切換目錄
os.listdir() : 列出目錄檔案 返回乙個列表
os.mkdir() : 建立目錄
os.remove() : 刪除目錄下的檔案
os.linesep : 列印作業系統的分隔符
os.path.join(os.getcwd(), 'aaa', 『bbb』, 『ccc』) : 拼接出來多級目錄
os.path.split('檔案或者目錄'): 把最後檔案和目錄分開
os.path.splitext('檔案') : 把檔案的字尾名和前面分開,返回乙個tuple
os.path.splitdrive('目錄') : 目錄和後面分開
command模組
通過python呼叫系統命令 只適用於linux。
commands是提供linux系統環境下支援使用shell命令的乙個模組。
commands.getoutput(cmd),只返回執行shell命令的結果。
import commands
cmd = 'ls /opt'
a = commands.getoutput(cmd)
print(type(a))
print(a)
commands.getstatusoutput(cmd)
import commands
cmd = 'ls /home/admin'
c = commands.getstatusoutput(cmd)
print(type(c))
status, output = commands.getstatusoutput(cmd)
print(status)
print(output)
print(type(output))
返回結果是乙個tuple,第乙個值是shell執行的結果,如果shell執行成功,返回0,否則,為非0,第二個是乙個字串,就是我們shell命令的執行結果,python通過一一對應的方式複製給status和output。
sys模組
通過sys模組獲取程式引數,python的sys模組預設是把第乙個引數預設是程式本省,從第二個引數起都是**後面跟著的引數,通過sys.arg[n]就可以獲得傳入到程式中的引數。
import sys
def usage():
'''usage'''
print 'usage: %s %s %s %s' % (sys.argv[0], 'tokenid', 'subject', 'content')
sys.exit()
def main():
if len(sys.argv) != 4:
usage()
else:
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])
print(sys.argv[3])
if __name__ == "__main__":
main()
sys.stdin\stdout\stderr
功能:stdin , stdout , 以及stderr 變數包含與標準i/o 流對應的流物件. 如果需要更好地控制輸出,而print 不能滿足你的要求, 它們就是你所需要的. 你也可以替換它們, 這時候你就可以重定向輸出和輸入到其它裝置( device ), 或
者以非標準的方式處理它們。
sys.stdout 與print
當我們在 python 中列印物件呼叫 print obj 時候,事實上是呼叫了sys.stdout.write(obj+'\n'),print 將你需要的內容列印到了控制台,然後追加了乙個換行符,print 會呼叫 sys.stdout 的 write 方法。
捕獲sys.exit(n)呼叫
功能:執行到主程式末尾,直譯器自動退出,但是如果需要中途退出程式,可以呼叫sys.exit函式,帶有乙個可選的整數引數返回給呼叫它的程式,表示你可以在主程式中捕獲對sys.exit的呼叫。(0是正常退出,其他為異常)
exitfunc()函式,及當執行sys.exit(1)的時候,呼叫exitfunc()函式 sys.exit(1)後面的內容就不會執行了,因為程式已經退出。
python 常用模組
1.告訴直譯器 找模組 import sysunix要絕度路徑 只有第一次匯入執行。name main 2.當做包,必須包含乙個命名為 init py的檔案 模組 3.dir看模組裡有什麼 下劃線開始,不是給模組外部用的。過濾 import copy n for n in dir copy if n...
python常用模組
collections提供了幾個便於使用的資料型別。1 namedtuple 這個資料型別生成可以使用呼叫屬性的方法來訪問元素內容的元祖 import collections cc collections.namedtuple sha x y get cc 1,2 print get.x,get.y...
python 常用模組
1 os 包含基本的作業系統功能。2 numpy 科學計算庫,提供了矩陣運算的功能。3 sy 有關python執行環境變數的變數和函式。3 image 影象處理基本庫。5 functools 用於高階函式 指那些作用於函式或者返回其它函式的函式,通常只要是可以被當做函式呼叫的物件就是這個模組的目標。...