您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Python如何讀取和存儲(chǔ)yaml文件,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
YAML 是 "YAML Ain't a Markup Language"(YAML 不是一種標(biāo)記語言)的遞歸縮寫。在開發(fā)的這種語言時(shí),YAML 的意思其實(shí)是:"Yet Another Markup Language"(仍是一種標(biāo)記語言)。
YAML 的語法和其他高級(jí)語言類似,并且可以簡(jiǎn)單表達(dá)清單、散列表,標(biāo)量等數(shù)據(jù)形態(tài)。它使用空白符號(hào)縮進(jìn)和大量依賴外觀的特色,特別適合用來表達(dá)或編輯數(shù)據(jù)結(jié)構(gòu)、各種配置文件、傾印調(diào)試內(nèi)容、文件大綱(例如:許多電子郵件標(biāo)題格式和YAML非常接近)。
基本語法
大小寫敏感
使用縮進(jìn)表示層級(jí)關(guān)系
縮進(jìn)不允許使用tab,只允許空格
縮進(jìn)的空格數(shù)不重要,只要相同層級(jí)的元素左對(duì)齊即可
'#'表示注釋
數(shù)據(jù)類型
YAML 支持以下幾種數(shù)據(jù)類型:
對(duì)象:鍵值對(duì)的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
純量(scalars):?jiǎn)蝹€(gè)的、不可再分的值
關(guān)于yaml的簡(jiǎn)單介紹就到這里,今天需要用Python來讀取/存儲(chǔ)yml文件,廢話補(bǔ)多少,直接看具體的操作:
#!usr/bin/env python # encoding:utf-8 from __future__ import division """ __Author__:沂水寒城 功能: yaml 操作 """ import sys import yaml def write2Yaml(data, save_path="test.yaml"): """ 存儲(chǔ)yaml文件 """ with open(save_path, "w") as f: yaml.dump(data, f) def loadData(data="config.yaml"): """ 加載yaml文件 """ with open(data, "r") as f: content = f.read() yamlData = yaml.load(content) print("yamlData_type: ", type(yamlData)) print("yamlData: ", yamlData) return yamlData if __name__ == "__main__": data = { "kind": "SeldonDeployment", "spec": { "name": "test-deployment", "predictors": [ { "graph": { "endpoint": {"type": "REST"}, "type": "MODEL", "name": "step_one", "children": { "endpoint": {"type": "REST"}, "type": "MODEL", "name": "step_two", "children": { "endpoint": {"type": "REST"}, "type": "MODEL", "name": "step_three", "children": [], }, }, }, "componentSpecs": [ { "spec": { "containers": [ { "image": "seldonio/step_one:1.0", "name": "step_one", }, { "image": "seldonio/step_two:1.0", "name": "step_two", }, { "image": "seldonio/step_three:1.0", "name": "step_three", }, ] } } ], "name": "example", "replicas": 1, } ], }, "apiVersion": "machinelearning.seldon.io/v1alpha2", "metadata": {"name": "seldon-model"}, } write2Yaml(data, save_path="test.yaml") yamlData = loadData(data="test.yaml") print(yamlData == data)
上述測(cè)試用的test.yaml文件如下:
apiVersion: machinelearning.seldon.io/v1alpha2 kind: SeldonDeployment metadata: name: seldon-model spec: name: test-deployment predictors: - componentSpecs: - spec: containers: - image: seldonio/step_one:1.0 name: step_one - image: seldonio/step_two:1.0 name: step_two - image: seldonio/step_three:1.0 name: step_three graph: children: children: children: [] endpoint: type: REST name: step_three type: MODEL endpoint: type: REST name: step_two type: MODEL endpoint: type: REST name: step_one type: MODEL name: example replicas: 1
在上述代碼中可以看到我操作的yaml文件后綴都寫的是yaml,其實(shí)寫成yml也是可以的。如下所示:
關(guān)于“Python如何讀取和存儲(chǔ)yaml文件”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。