Python_16 配置檔案與封裝

sweet發表於2023-05-03

一、查缺補漏
1. ctrl + alt +L 規範格式
2. Python 使用 ini&yaml 配置檔案
 http://testingpai.com/article/1621245437855
3. 如何進行SDK的測試
 https://www.cnblogs.com/winson-317/p/9896645.html
4. Shift+alt+E 執行選中的程式碼
二、配置檔案分類 三種配置檔案效率一致,py最方便
1. 硬編碼與軟編碼
 a. 軟編碼:引數化整個專案配置,透過引數實現比如設定name為引數,呼叫時賦值
 b. 硬編碼:寫死的編碼方式,比如說裡name=alisa就是硬編碼,要修改alisa要改程式碼
2. xxx.ini:django專案部署用uwsgi,配置檔案為ini檔案,有時java開發也會用到
3. xxx.yaml:java用的多,dockercompose會用到,docker和k8s都用到
4. xxx.py:python檔案,django專案多是py檔案 如:settings.py
5. 使用場景:生產環境和測試環境的區別:ip不一樣、資料庫地址不一樣、密碼不一樣、賬號不一樣
將配置檔案中的ip等資料更改就可以切換生產環境和測試環境~
三、xxx.ini 檔案
1. 寫法:在專案下點選New->File->建立一個字尾為.ini的檔案
 [section] -- 可以自己定義
 key1=val1
 key2=val2
 key3=val3
 相似於
 test_dict={"key1":"val1","key2":"val2","key3":"val3"}
 print(test_dict["key1"])
 test_conf={"testpy1":{"key1":"val1","key2":"val2","key3":"val3"},
 "testpy2":{"key1":"val1","key2":"val2","key3":"val3"}}
2. 特點:
  a. section不能重複
  b. 同一個section中的key不能重複
  c. 等號兩邊不能有空格
  d. 獲取值預設是字串型別
  e. 新增、刪除、修改只是對快取區域的改變,不會真實修改檔案
3. 常用方法:
  a. 獲取所有的sections 兩種方式
   賦值物件1= conf.sections() 不需要list強制型別轉換
   賦值物件2 = conf.keys() 結果會多一個'DEFAULT' 需要list強制型別轉換
  b. 獲取指定sections下所有的options(key)
   test_options = conf.options(section='想要查詢的section部分') 獲取key
   test_options=conf.items(section='想要查詢的section部分') 獲取key(options),value
  c. 直接獲取key(options)的value
    i. 預設獲取到的是str【常用】
     value = conf.get(section='想要查詢的section部分', option='想查詢val的key值')
    ii. 獲取布林值
     value2=conf.getboolean(section='想要查詢的section部分', option='想查詢val為True/False的key值')
    iii. 獲取數值(int型別),不能使用小數,只能寫整數
     value3 = conf.getint(section='想要查詢的section部分', option='想查詢val為int型別的key值')
    iv. 獲取數值(float型別)
     value4 = conf.getfloat(section='想要查詢的section部分', option='想查詢val為float型別的key值')

4. 其他操作
  a. 新增 sections(操作在記憶體中,不會儲存到檔案裡) conf.add_section('your_section')
  b. 新增 key,val(操作在記憶體中,不會儲存到檔案裡) conf.set('your_section','key22','val22')
  c. 刪除(操作在記憶體中,不會儲存到檔案裡) conf.remove_option('your_section', "key1") 對寫入的文件有效

          

          

  d. 寫入檔案:將你記憶體你的資料全部寫入檔案進行覆蓋,conf 初始化的時候讀取的是所有物件
   conf.write(fp=open(file=檔案路徑,mode='w'))

四、xxx.yaml 檔案
1. 新建yaml檔案 :在專案下點選New->File->建立一個字尾為.yaml的檔案
2. 寫法:如果是寫字典型別就只能是字典型別,如果寫列表型別就只能是列表型別
 key1: val1
 key2:
  - test01 ---列表
  - test02
  - test03
3. 資料型別只支援一種,寫多種只能巢狀在val裡類似於-> {key1:val1,key2:[test01, test02, test03]}
4. 特點:
  a. 使用縮排來表示層級關係
  b. key值要和val值保持一個空格,槓和列表中間也要一個空格
  c. 大小寫敏感
  d. 同一個層級的要對齊
  e. 只能用空格,不要用tab
  f. 一個yaml對外只支援一種資料型別
  g. yanl檔案是一次性讀取,不支援連續讀取
  h. 讀取出來就是python物件,可以直接取值使用
5. 常用方法:
  a. open(file=file_path,encoding="utf-8") 開啟檔案 路徑可以拼接為絕對路徑,但使用相對路徑也可以
  b. value = yaml.load(stream=file,Loader=yaml.FullLoader) 固定搭配,讀取全部檔案內容

        

   另一種方法是open開啟但是需要手動關閉

       

6. 安裝yaml pip install pyyaml

五、封裝
1. ini的封裝

2. yaml的封裝
a. 用函式封裝

b. 用類封裝

六、一些重要的點
1. 老師的部落格裡面有很多知識,去看看
2. 專案中使用的常量,我們把它收集在一個檔案中,這個就是配置檔案,配置檔案在專案中是非常有必要的,它避免了專案中檔案對常量的分散使用,讓常量可以一致修改,避免造成修改不全面的問題
3. 使用open 開啟檔案需要手動關閉,使用with open的時候自動關閉所以不需要手動close

 

相關文章