python封裝讀取yaml檔案的指令碼

2021-10-01 17:54:13 字數 1731 閱讀 2232

#一:封裝讀取yaml檔案的指令碼yamlutils.py

# 1.在開啟檔案之前應先判斷該檔案是否存在,我們將判斷寫在類的初始化方法中

class yamlutils:

def __init__(self, filepath):

# 判斷新增

if os.path.exists(filepath):

self.yamlfile = filepath

else:

raise filenotfounderror("檔案不存在")

# 在初始化的最後我們加上乙個預設引數,用於判斷檔案是否已經被讀取

self._all_data = none

# 2.判斷檔案是否存在後,我們嘗試讀取檔案(為了防止重複讀取,我們需做乙個判斷)

def safe_load_all(self):

# 判斷檔案是否已經讀取

if not self._all_data: # 因為if none 就代表條件為false,所以在前面新增乙個not,便是如果_all_data沒有值的話,就執行判斷語句下的**

# 第一步:我們讀取檔案

with open(self.yamlfile, 'rb') as f:

# 第二步:我們獲取所讀取檔案中的值

self._all_data = list(yaml.safe_load_all(f)) # 注:該處應該將yaml讀取後的內容用list()轉化成列表的形式展示

# 第三步:我們將獲取到的檔案內容返回出去

return self._all_data

#二:封裝讀取配置檔案內容的指令碼configutils.py

#1.使用safe_load_all讀取配置檔案後,我們需要獲取到檔案中各字典內容對應的具體key-values,所以我們需要建立乙個yamlutils的物件,首先我們先獲取到yaml檔案的位址

# 當前檔案的絕對路徑

current = os.path.abspath(__file__)

# 當前檔案的父級目錄

base_dir = os.path.dirname(current) #以上兩行**也可以使用 base_dir = os.getcwd()代替

# 定義config目錄路徑 -- os.sep是分隔符

_conf_file = base_dir + os.sep + "config.yaml"

#定義乙個方法返回yaml檔案的路徑

def get_config_file():

return _conf_file

class configutils:

#我們將建立yamlutils物件的操作放在初始化方法中

def __init__(self):

self.yamlconfig = yamlutils(get_config_file()).safe_load_all()

#定義獲取具體key-values的方法,例如測試環境的位址

def get_conf_qaurl(self):

return self.yamlconfig[0].get('qaurl')

#我們建立該類的物件,當其他模組引用的時候直接引用該物件

config = configutils()

yaml檔案的示例:

#測試環境鏈結

---qaurl: ''

#位址---

stageurl: ''

python讀取 YAML檔案

yaml在我的理解看來,它是一種資料的格式,他的格式跟json很相近,但是yaml支援注釋 1.物件名 健 空格 對。寫法一 desired caps platformname android devicename xiaomi mix platformversion 5.1 unicodekeyb...

python讀取YAML檔案步驟

安裝 pyyaml 模組 pip install pyyaml 編寫 存在 test.yml 檔案,內容如下 name xiaohong age 24 books 吶喊 朝花夕拾讀取yaml 如下 import yaml file open test.yaml r encoding utf 8 使用...

python筆記 讀取yaml檔案

使用yaml.load 總是出現告警 yamlloadwarning calling yaml.load without loader is deprecated,as the default loader is unsafe.please read for full details.原因 yaml...