python讀conf
❶ python logging.conf是什麼類型文件
下面的函數用於配置logging模塊,它們位於logging.config模塊中。你可以使用這些函數來配置,也可以在logging或是logging.handlers中聲明它們來配置。
logging.config.dictConfig(config)
從dictionary中獲取logging配置
logging.config.fileConfig(fname, defaults=None, disable_existing_loggers=True)
從指定的fname的配置文件中讀取logging配置文件
該函數可以在應用程序中多次調用
logging.config.listen(port=DEFAULT_LOGGING_CONFIG_PORT)
在指定埠啟動socket server並偵聽新配置
logging.config.stopListening()
關閉先前正在偵聽的server
Configuration file format
被fileConfiguration()所理解的配置文件格式基於configparser功能。配置文件必須包含[loggers], [handlers]和[formatters],它們分別代表日誌文件中定義的每種類型的實體。對這3種實體,後面有一個單獨的section來定義該實體如何配置。
因此,[loggers]節中名為log01的logger,相關的配置文件細節在[logger_log01]節中定義。類似地,[handlers]節中名為
hand01的handler將在[handler_hand01]節中聲明,[formatters]節中的form01將在[formatter_form01]聲明。root logger配置必須在[logger_root]節聲明。
注意:fileConfig() API比dictConfig()舊,並不包含logging某些方面的功能。建議以後盡量使用dictConfig API。
配置文件的例子如下:
[loggers]
keys=root,log02,log03,log04,log05,log06,log07
[handlers]
keys=hand01,hand02,hand03,hand04,hand05,hand06,hand07,hand08,hand09
[formatters]
keys=form01,form02,form03,form04,form05,form06,form07,form08,form09
root logger必須指定一個級別和handlers列表。示例如下:
[logger_root]
level=NOTSET
handlers=hand01
其中level可以是DEBUG, INFO, WARNING, ERROR, CRITICAL or NOTSET之一,僅對root logger來說,NOTSET意味著所有的log message
都會記錄。對非root的logger,強制要求一些額外信息,比如
[logger_parser]
level=DEBUG
handlers=hand01
propagate=1
qualname=compiler.parser
當一個非root的logger中level被配置為NOSET,它將通過上一級的logger來確定當前logger的有效級別。propagete為1表示message必須傳播到上一級logger中,為0表示不傳。qualname表示該logger的層級channel名稱,這就是說,應用程序使用該名稱可以得到該logger對象。
handler類型很多,主要有StreamHandler,FileHandler,NullHandler,SysLogHandler,HTTPHandler等
handler節對應的配置示例如下:
[handler_hand01]
class=StreamHandler
level=NOTSET
formatter=form01
args=(sys.stdout,)
class表示該handler在logging包命名空間中的類名,level表示logger的級別,NONSET表示要記錄所有日誌。
formatter表示該handler的formatter的鍵名,假如空白的話,就使用默認值logging._defaultFormatter。假如formatter指定了該名字,必須在對應的section聲明。args欄位是handler類的構造函數的變數列表,參考相關handler構造函數,或者下面的例子,去觀察通常的元素是如何構造的。比如:
[handler_hand02]
class=FileHandler
level=DEBUG
formatter=form02
args=('python.log', 'w')
下面是formatter的配置
[formatter_form01]
format=F1 %(asctime)s %(levelname)s %(message)s
datefmt=
class=logging.Formatter
format欄位是全局格式字元串,datefmt是strftime()兼容的date/time格式字元串,為空時使用默認的ISO8601格式,比如2003-01-23 00:29:50,411,class欄位表示formatter的類名,
日誌級別如下:
Level Numeric value
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0
logging.handlers解讀
logging模塊中定義了這3個handler:StreamHandler, FileHandler and NullHandler
其它的handler都在logging.handler中定義,一並說明如下:
StreamHandler
該類位於logging包,將logging output輸出到流中,比如sys.stdout,sys.stderr或任何支持write()和flush()方法的類文件對象
class logging.StreamHandler(stream=None)
假如指定了stream名稱,日誌將輸出到流實例中,否則,日誌輸出到sys.stderr
FileHandler
該類位於logging包,將logging output輸出到磁碟文件中,文件默認無限增長
class logging.FileHandler(filename, mode='a', encoding=None, delay=False)
打開指定的文件並記錄日誌,假如mode沒有設置,默認使用'a'表示追加日誌到文件中。
NullHandler
該對象什麼也不處理
WatchedFileHandler
一個FileHandler實例,監視日誌文件的變化,假如文件變化了,它會關閉並重新打開,不建議在Windows下使用
文件的變化可以發生,當應用程序使用newsyslog和logrotate來實現日誌文件的回滾時。這個handle是在Unix/Linux下面,監視文件是否改變。(一個文件認為改變了,假如它的device厚實inode已經改變),將舊的文件關閉,這個流打開。
class logging.handlers.WatchedFileHandler(filename[, mode[, encoding[, delay]]])
指定的文件被打開,用來記錄日誌,假如mode未指示,默認使用a
RotatingFileHandler
支持磁碟文件的回滾
class logging.handlers.RotatingFileHandler(filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=0)
你可以使用 maxBytes和backupCount值去讓日誌文件在預設大小時回滾。只要日誌文件在長度上接近maxBytes時,就會關閉舊日誌文件,打開一個新的日誌文件,實現回滾。假如maxBytes或backupCount為0,回滾不會發生。假如backupCount非零,系統會備份舊文件,文件名後加『.1』, 『.2』 。比如,日誌文件名為app.log,backupCount為5,將會得到app.log, app.log.1, app.log.2, 直到app.log.5這6個文件。寫入日誌的文件總是app.log,當這個文件填滿時,就關閉它並重命名為app.log.1, 假如還存在app.log.1, app.log.2等文件,就逐一改名為app.log.2, app.log.3等等。
TimedRotatingFileHandler
支持在指定時間段內回滾日誌
class logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False)
回滾基於when和interval設置,when指定interval的類型,參見下表,大小寫不敏感,默認按小時回滾
Value Type of interval
'S' Seconds
'M' Minutes
'H' Hours
'D' Days
'W0'-'W6' Weekday (0=Monday)
'midnight' Roll over at midnight
回滾擴展名使用strftime format %Y-%m-%d_%H-%M-%S或其頭部子字元串,當使用基於weekday的回滾時,W0表示周一,……,W6表示周日,interval的值不會用到
backupCount表示備份數,當日誌很多時,新日誌會覆蓋舊日誌,刪除邏輯使用interval值去決定刪除哪些日誌文件
utc為true,表示使用UTC時間,否則使用本地時間
SocketHandler
通過網路套接字輸出日誌,SocketHandler類的基類使用TCP socket
class logging.handlers.SocketHandler(host, port)
向指定地址和埠的遠程主機發送日誌
DatagramHandler
繼承自基類SocketHandler類,使用UDP socket發送日誌message
class logging.handlers.DatagramHandler(host, port)
SysLogHandler
發送日誌到遠程或是本地unix syslog
class logging.handlers.SysLogHandler(address=('localhost', SYSLOG_UDP_PORT), facility=LOG_USER, socktype=socket.SOCK_DGRAM)
NTEventLogHandler
發送日誌消息到本地Windows NT, Windows 2000 or Windows XP event log
class logging.handlers.NTEventLogHandler(appname, dllname=None, logtype='Application')
SMTPHandler
通過SMTP將日誌消息發送到email address
MemoryHandler
支持將日誌message緩存到內存中,周期性刷新日誌到target handler
class logging.handlers.BufferingHandler(capacity)
class logging.handlers.MemoryHandler(capacity, flushLevel=ERROR, target=None)
HTTPHandler
使用GET或是POST,將日誌message發送到web server
class logging.handlers.HTTPHandler(host, url, method='GET')
❷ 如何用python來修改配置文件conf
樓上的倆人回答綜合一下就是完美的答案,文件打開方式file.open。但是這種方式比較low,但是如果就是一簡單的讀寫文件用著方便,configparser是專門的conf庫,有一點點(只是一點點)學習成本,但是也很方便。推薦後者。
❸ python 把token保存到conf.py配置文件中後別的方法獲取不到最新的token
a.py12def test(): return Trueb.py12import aprint(a.test())
❹ 如何使用Python3讀寫INI配置文件
import configparser
# 生成config對象
conf =configparser.ConfigParser()
# 用config對象讀取配置文件
conf.read("xxx.ini")
#從ini配置文件中獲取信息
a=conf.get("xx","yy")
print(a) 結果為: zz
xxx.ini
[xx]
yy=zz
❺ python configparser模塊可以分析哪些格式的數據
測試配置文件test.conf內容如下:
復制代碼代碼如下:
[first]
w = 2
v: 3
c =11-3
[second]
sw=4
test: hello
測試配置文件中有兩個區域,first和second,另外故意添加一些空格、換行。
下面解析:
復制代碼代碼如下:
>>> import ConfigParser
>>> conf=ConfigParser.ConfigParser()
❻ 如何使用python 讀取一個復雜文件
#和;都是在行首對不?可以這么寫:
conf = open(r"c:\\config.txt", "r")
for line in conf:
if line and line[0] != '#' and line[0] != ';':
print(line)
break
conf.close()
❼ [python] ConfigParser讀取帶中文的ini文件
ini文件按utf-8格式保存試試看