爛筆頭 知識回顧 配置檔案

2021-09-28 11:31:59 字數 2733 閱讀 6477

一般配置檔案種類: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...