一般配置檔案種類:ini,conf,yaml
[section] 區域名
option = value 選項 = 選項值
1️⃣建立配置解析器物件
config = configparser()
2️⃣指定讀取的配置檔名
config.read('filename', encoding='utf-8')
3️⃣讀取資料
config.sections()
獲取配置檔案的option
方法一:
config[section][option]
方法二:
config.get(section,option)
取值轉換為python對應的型別:
getint()
getfloat()
getboolean() -->
對應轉換關係:
**配置檔案中存在乙個預設為default的section區域,該區域中的option為所有section中公共的資料(類似全域性變數),若不顯式定義default,則預設為乙個空字典**
1️⃣建立配置解析器物件
config = configparser()
2️⃣將需要寫入的配置檔案構造成巢狀字典的字典(section為key,option及value為key,value)
for key in dict_dict:
config[key] = dict_dict[key]
with open('filename', 'w') as f:
config.write(f)
class handleconfig(configparser):
def __init__(self, filename=file_path.config_file_path):
# 繼承父類,同時重寫父類self.filename屬性,對父類init方法的拓展
super().__init__()
self.filename = filename
self.read(self.filename, encoding="utf-8")
def __call__(self, section="default", option=none, is_eval=false, is_bool=false):
"""'物件()'這種形式,__call__方法會被呼叫
:param section: 區域名
:param option: 選項名
:param is_eval: 為預設引數,是否進行eval函式轉換,預設不轉換
:param is_bool: 選項所對應的值是否需要轉化為bool型別,預設不轉換
:return:
"""if option is none:
# 返回default預設區域下的所有選項,構造成的乙個字典
return dict(self[section])
if isinstance(is_bool, bool):
if is_bool:
# 將獲取到的資料使用getboolean()方法來獲取
return self.getboolean(section, option)
else:
raise valueerror("is_bool必須是布林型別") # 手動拋異常
data = self.get(section, option)
# 如果獲取到的資料為數字型別的字元型,自動轉化為python中數字型別
if data.isdigit(): # 判斷是否為數字型別的字串
return int(data)
try:
return float(data) # 如果為浮點型別的字串,則直接轉換
except valueerror:
pass
if isinstance(is_eval, bool):
if is_eval:
# 將獲取到的資料使用eval函式進行轉換
return eval(data)
else:
raise valueerror("is_eval") # 手動拋異常
return data
儲存字典使用[key: value]的形式,(冒號後面需空一格)儲存列表使用[- 元素]的形式,儲存書寫注意縮排
yaml檔案寫入一組資料直接使用dump方法,寫入多組資料使用dumpall方法,注意寫入資料帶中文,需要指定引數allowunicode=true
with open('filename.yaml', mode='w', encoding='utf-8') as f:
yaml.dump(data=test_data, stream=f, allow_unicode=true)
讀取資料時需要使用load_all方法,而且此方法返回乙個生成器,需要使用for迴圈迭代讀取每一組資料
with open('filename.yaml', mode='r', encoding='utf-8') as file:
t = yaml.load_all(file, loader=yaml.fullloader)
for data in t:
print(t)
爛筆頭 知識回顧 日誌
日誌類相關 解決問題 logging模組,預設有乙個root收集器,收集warning級別及以上的日誌 建立日誌收集器物件 loger logging.getlogger 定義日誌收集器等級 loger.setlevel level str 定義輸出到終端控制台 out where logging....
keepalive配置檔案知識詳解
keepalive配置檔案詳解 第一部分 全域性定義塊 1 email通知。作用 有故障,發郵件報警。2 lvs負載均衡器標識 lvs id 在乙個網路內,它應該是唯一的。3 花括號 用來分隔定義塊,因此必須成對出現。如果寫漏了,keepalived執行時,不會得到預期的結果。由於定義塊記憶體在巢狀...
linux 啟動配置檔案相關知識
在kernel掛載根檔案系統後,執行的第乙個程式是根目錄下的linuxrc,實際是乙個指向 bin busybox的鏈結,也就是說系統起來後執行的第乙個程式是busybox本身。先執行 etc inittab,然後呼叫 etc init.d rcs,最後是執行 etc profile 1.initt...