028_configparser模塊,logging模塊

 

configparser模塊     生成配置文件python

  • 該模塊適用於配置文件的格式與windows ini文件相似,能夠包含一個或多個節(section),每一個節能夠有多個參數(鍵=值)。
  • 生成的配置文件做用和以前工程中設置的config.py文件同樣,
  • 這種方式生成的配置文件有格式要求,配置文件的內容要以組的方式劃分

1,生成配置文檔windows

configparse
import configparser
config = configparser.ConfigParser()
config["DEFAULT"] = {'ServerAliveInterval': '45',
                      'Compression': 'yes',
                     'CompressionLevel': '9',
                     'ForwardX11':'yes'
                     }
config['bitbucket.org'] = {'User':'hg'}

config['topsecret.server.com'] = {'Host Port':'50022','ForwardX11':'no'}

with open('example.ini', 'w') as f:
   config.write(f)

  

2,查找ide

import configparser

config = configparser.ConfigParser()

#---------------------------查找文件內容,基於字典的形式
#下面的語句請一塊一塊的使用,即將其它塊的註釋掉。

print(config.sections())        #>>>[]   #什麼都拿不到,由於沒指定讀什麼文件,可是不會報錯

config.read('example.ini')	# 讀取文件
print(config.sections())        #>>>['bitbucket.org', 'topsecret.server.com']  # 獲取全部的組,「default」組比較特別是不會顯示的。

print('bytebong.com' in config) # False  #查看組是否在這個文件裏面
print('bitbucket.org' in config) # True


print(config['bitbucket.org']["user"])  # hg  #拿bitbucket.org組的user項
print(config['DEFAULT']['Compression']) #yes
print(config['topsecret.server.com']['ForwardX11'])  #no


print(config['bitbucket.org'])          #<Section: bitbucket.org>  #打印bitbucket.org的地址

for key in config['bitbucket.org']:    #打印組內全部的鍵,  # 注意,有default會默認打印default的鍵,並且無論經過那個組都能使用default的項
    print(key)

print(config.options('bitbucket.org'))  # 同for循環,找到'bitbucket.org'下全部鍵

print(config.items('bitbucket.org'))    #找到'bitbucket.org'下全部鍵值對

print(config.get('bitbucket.org','compression')) # yes       # get方法Section下的key對應的value

3,增刪改操做函數

import configparser
config = configparser.ConfigParser()
config.read('example.ini')

config.add_section('yuan')   #增長一個yuan組 

config.remove_section('bitbucket.org')  #刪除一個section
config.remove_option('topsecret.server.com',"forwardx11")   # 刪除一個配置項

config.set('topsecret.server.com','k1','11111')  # 修改配置項,修改完還要寫入。
config.set('yuan','k2','22222')
# f = open('new2.ini', "w")
# config.write(f) # 寫進新文件,由於文件事實上是不能修改的
# f.close()

 

logging模塊 日誌編碼

1,什麼叫日誌?spa

  日誌 用來記錄用戶行爲 或者 代碼的執行過程線程

  # login  登陸
  # log 日誌
  # logging 日誌debug

 

   logging 做用日誌

# 我可以「一鍵」控制
# 排錯的時候須要打印不少細節來幫助我排錯
# 嚴重的錯誤記錄下來
# 有一些用戶行爲 有沒有錯都要記錄下來code

 2,有四個級別

import logging
logging.debug('debug message')        # 排錯信息  # 低級別的 
logging.info('info message')            # 正常信息
logging.warning('warning message')      # 警告信息
logging.error('error message')          # 錯誤信息
logging.critical('critical message')  # 嚴重錯誤信息  # 高級別的 

  默認狀況下Python的logging模塊將日誌打印到了標準輸出中,且只顯示了大於等於WARNING級別的日誌,這說明默認的日誌級別設置爲WARNING(日誌級別等級CRITICAL > ERROR > WARNING > INFO > DEBUG),默認的日誌格式爲「日誌級別:Logger名稱:用戶輸出消息」。

3,配置

# basicconfig 簡單 能作的事情相對少
    # 中文的亂碼問題
    # 不能同時往文件和屏幕上輸出
# logger對象配置 稍微有點複雜 能作的事情相對多
  3.1,basicconfig
import logging  
logging.basicConfig(level=logging.DEBUG,     #「level=logging.DEBUG」  表示顯示DEBUG級別及以上級別的內容。
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',  #配置參數 # 格式化輸出 print('%(key)s'%{'key':'value'}) # print('%s'%('key','value'))
                    datefmt='%a, %d %b %Y %H:%M:%S',   # 時間格式
                    filename='test.log',     #往文件裏寫  #去掉這兩句,就輸出到控制檯。
                    filemode='w')   
  
logging.debug('debug message')  
logging.info('info message')  
logging.warning('warning message')  
logging.error('error message')  
logging.critical('critical message')

  

    3.1.2,配置參數  

 1 logging.basicConfig()函數中可經過具體參數來更改logging模塊默認行爲,可用參數有:  2 
 3 filename:用指定的文件名建立FiledHandler,這樣日誌會被存儲在指定的文件中。  4 filemode:文件打開方式,在指定了filename時使用這個參數,默認值爲「a」還可指定爲「w」。  5 format:指定handler使用的日誌顯示格式。  6 datefmt:指定日期時間格式。  7 level:設置rootlogger(後邊會講解具體概念)的日誌級別  8 stream:用指定的stream建立StreamHandler。能夠指定輸出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默認爲sys.stderr。若同時列出了filename和stream兩個參數,則stream參數會被忽略。  9 
10 format參數中可能用到的格式化串: 11 %(name)s Logger的名字 12 %(levelno)s 數字形式的日誌級別 13 %(levelname)s 文本形式的日誌級別 14 %(pathname)s 調用日誌輸出函數的模塊的完整路徑名,可能沒有 15 %(filename)s 調用日誌輸出函數的模塊的文件名 16 %(module)s 調用日誌輸出函數的模塊名 17 %(funcName)s 調用日誌輸出函數的函數名 18 %(lineno)d 調用日誌輸出函數的語句所在的代碼行 19 %(created)f 當前時間,用UNIX標準的表示時間的浮 點數表示 20 %(relativeCreated)d 輸出日誌信息時的,自Logger建立以 來的毫秒數 21 %(asctime)s 字符串形式的當前時間。默認格式是 「2003-07-08 16:49:45,896」。逗號後面的是毫秒 22 %(thread)d 線程ID。可能沒有 23 %(threadName)s 線程名。可能沒有 24 %(process)d 進程ID。可能沒有 25 %(message)s用戶輸出的消息
配置參數

     3.1.3,basicconfig   在可能錯誤的地方進行記錄。

import logging  
logging.basicConfig(level=logging.DEBUG,     #「level=logging.DEBUG」  表示顯示DEBUG級別及以上級別的內容。
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',  #配置參數 # 格式化輸出 print('%(key)s'%{'key':'value'}) # print('%s'%('key','value'))
                    datefmt='%a, %d %b %Y %H:%M:%S',   # 時間格式
                    filename='test.log',     #往文件裏寫   #去掉這兩句,就輸出到控制檯。
                    filemode='w')  

try:
    int(input('num >>'))
except ValueError:
    logging.error('輸入的值不是一個數字') 
 # 可是basicconfig記錄的日誌編碼格式有問題,在文件中不能顯示中文但在控制檯沒問題。

  3.4,logger對象配置

import logging

#建立一個logger對象,管智能輸出
logger = logging.getLogger()  
# 建立一個handler,用於寫入日誌文件
fh = logging.FileHandler('test.log',encoding='utf-8') 

# 再建立一個handler,用於輸出到控制檯 
ch = logging.StreamHandler() 
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setLevel(logging.DEBUG)

fh.setFormatter(formatter)  # 文件操做符 和 格式關聯
ch.setFormatter(formatter) 
logger.addHandler(fh) #logger對象能夠添加多個fh和ch對象 
logger.addHandler(ch) # logger 對象 和 文件操做符 關聯

logger.debug('logger debug message') 
logger.info('logger info message') 
logger.warning('logger warning message') 
logger.error('logger error message') 
logger.critical('logger critical message')
相關文章
相關標籤/搜索