python內建模組(loggin os)

2021-08-10 17:27:54 字數 4799 閱讀 8560

1、loggin模組

日誌是我們排查問題的關鍵利器,寫好日誌記錄,當我們發生問題時,可以快速定位**範圍進行修改。python有給我們開發者們提供好的日誌模組,下面我們就來介紹一下logging模組。

import loggin

logging.debug('this

is debug')

logging.info('this

is info message')

logging.warning('this

is warning')

logging.error('this

is error')

logging.critical('this

is critical')

結果:

warning:root:this

is warning

error:root:this

is error

critical:root:this

is critical

process finished with exit code 0

說明:

寫了三句話,但是在螢幕上只列印了乙個warning級別的日誌,這個是怎麼回事呢?

預設情況下,logging將日誌列印到螢幕,日誌級別大小關係為:critical > error > warning > info > debug > notset,當然也可以自己定義日誌級別。

● debug:詳細的資訊,通常只出現在診斷問題上。

● info:確認一切按預期執行

● warning:乙個警告,可能會有一些意想不到的事情發生了,或表明一些問題在不久的將來(例如。磁碟空間低」)。這個軟體還能按預期工作

● error:個更嚴重的問題,軟體沒能執行一些功能

● critical:乙個嚴重的錯誤,這表明程式本身可能無法繼續執行

而預設logging預設的日誌級別是info,一般基本上所有的程式都是這個級別,有助於我們排查問題,但是當發生問題,我們沒法定位到問題,很多情況下我們需要把日誌級別提公升到debug級別,那又怎麼辦呢?

2)通過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')

2017/11/13 06:20:15 loggin.py[line:19] debug this is debug message

2017/11/13 06:20:15 loggin.py[line:20] info this is info message

2017/11/13 06:20:15 loggin.py[line:21] warning this is warning message

說明:

主要是通過logging.basicconfig函式進行操作,現在我們來介紹一下該函式引數的用法:

level: 設定日誌級別,預設為logging.warning

filename: 指定日誌檔名。

filemode: 和file函式意義相同,指定日誌檔案的開啟模式,』w』或』a』

format: 指定輸出的格式和內容,format可以輸出很多有用資訊,如上例所示:

%(levelname)s: 列印日誌級別名稱

%(filename)s: 列印當前執行程式名

%(funcname)s: 列印日誌的當前函式

%(lineno)d: 列印日誌的當前行號

%(asctime)s: 列印日誌的時間

%(thread)d: 列印執行緒id

%(process)d: 列印程序id

%(message)s: 列印日誌資訊

datefmt: 指定時間格式,同time.strftime()

stream: 指定將日誌的輸出流,可以指定輸出到sys.stderr,sys.stdout或者檔案,預設輸出到sys.stderr,當stream和filename同時指定時,stream被忽略

logging.getlogger([name]):建立乙個日誌物件:

返回乙個logger例項,如果沒有指定name,返回root logger。只要name相同,返回的logger例項都是同乙個而且只有乙個,即name和logger例項是一一對應的。這意味著,無需把logger例項在各個模組中傳遞。只要知道name,就能得到同乙個logger例項。

logging.getlogger(name) 在上述例項中name就指的是main

2、os

os模組也是我們平時工作中很常用到的乙個模組,通過os模組呼叫系統命令,獲得路勁,獲取作業系統的型別等都是使用該模組。

1) 通過os獲取系統型別

import os

print(os.name)

如果是windows系統,os.name = 『nt』

如果是linux系統os.name = 『posix』

2) 執行系統命令

很多情況,我們通過python來代用系統命令,

import os

os.system(『ipconfig』)

content=os.popen('ipconfig').read()

print(content)

解釋:

該**呼叫了windows系統的ipconfig命令,ipconfig是用來檢視windows系統ip的。os.system(『ifconfig』)只會呼叫系統的命令,但是當我們需要獲得系統命令最後的執行結果的時候該怎麼辦呢?

這時候我們就用os.popen方法,os.popen()返回的是乙個file物件,我們可以通過file.read()來獲得最後系統命令最終的結果

3) 不同的作業系統是命令可能不一樣。所以在使用系統命令之前,我們先要判斷系統是linux系統還是windows系統

import os

#os.system(『ifconfig』)只會呼叫系統的命令,是當我們需要獲得系統命令最後的執行結果

os.system('ipconfig')

#os.popen()返回的是乙個file物件,我們可以通過file.read()來獲得最後系統命令最終的結果

content = os.popen('ipconfig').read()

print (content)

#找到這個ip的位置

print (content.find('192.168.0.109'))

#顯示當前路徑

print(os.getcwd())

#獲取當前目錄檔案

print(os.listdir('.'))

#切換目錄

os.chdir(r'f:')

#在當前目錄下建立abc目錄

#os.mkdir('abc')

#刪除當前目錄下的1.txt檔案,(如果檔案不存在會報錯)

#os.remove('1.txt')

#列印作業系統的分隔符,linux系統的分隔符\n,windows系統的分隔符\r\n,

print(os.linesep)

#目錄拼接但不會建立

print(os.path.join(os.getcwd(), 'abc.txt'))

#把最後檔案和目錄分開# ('f:', 'abc.txt')

path1 = os.path.join(os.getcwd(), 'abc.txt')

print(os.path.split(path1))

#把目錄和字尾名分開

print (os.path.splitext(path1))

##當前目錄下存在aaa目錄,不建立,當前不存在aaa目錄,建立aaa目錄

ifnot os.path.exists(r'f:\abc\aaa'):

os.mkdir(r'f:\abc\aaa')

#獲得e:\test\test.py檔案的目錄

print(os.path.dirname(r'e:\test\test.py'))

1, os.getcwd() 獲得目錄的當前系統程式工作路徑

2, os. chdir(『目標目錄』) 切換到目標目錄

3, os.listdir(『字串目錄』) 列出字串目錄下的所有檔案

4, os.mkdir(『目錄』) 建立目錄

5, os.remove(『1.txt』) 刪除檔案,檔案不存在時會報錯

6, os.linesep 列印作業系統的分隔符,linux系統的分隔符\n,windows系統的分隔符\r\n,mac系統的分隔符\r

7, os.path.join(os.getcwd(), 『aaa』, 『bbb』, 『ccc』) 拼接出來多級目錄:e:\test\aaa\bbb\ccc

8, os.path.exists(『目錄』) 判斷目錄是否存在

9, os.path.split(『檔案或者目錄』) 把最後的乙個目錄或者檔案和前面的目錄分開,返回乙個tuple

10,os.path.splitext(『檔案』) 把檔案的字尾名和前面分開,返回乙個tuple

os.fork()

PythonStudy 日誌模組 logging

日誌 日之石日常的流水,將程式執行過程中的狀態或資料盡心記錄,一般是記錄到日誌檔案當中的。在正常的專案之中,專案的執行的一些列印資訊,採用logging列印到檔案當中,這個過程就稱作為 日誌記錄模組 以下為預設的操作日誌模組 匯入日誌模組 import logging logging為預設列印者,是...

python內建模組 Python 內建模組

內建模組 python有一套很有用的標準庫 standard library 標準庫會隨著python直譯器,一起安裝在你的電腦中的。它是python的 乙個組成部分。這些標準庫是python為你準備好的利器,可以讓程式設計事半功倍。常用標準庫 標準庫 說明 builtins 內建函式預設載入 os...

Python內建模組

os.remove 刪除檔案 os.unlink 刪除檔案 os.rename 重新命名檔案 os.listdir 列出指定目錄下所有檔案 os.curdir 返回當前目錄 os.pardir 獲取當前目錄的父目錄字串名 os.chdir 改變當前工作目錄 os.getcwd 獲取當前檔案路徑 os...