支持多種語言:python、js、golang、java、c、c++
YAML 語言(發音 /ˈjæməl/ )的設計目標,就是方便人類讀寫。它實質上是一種通用的數據串行化格式。
它的基本語法規則如下。
- 大小寫敏感
- 使用縮進表示層級關系
- 縮進時不允許使用Tab鍵,只允許使用空格。
- 縮進的空格數目不重要,只要相同層級的元素左側對齊即可
#
表示注釋,從這個字符一直到行尾,都會被解析器忽略。
YAML 支持的數據結構有三種。
- 對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 數組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
- 純量(scalars):單個的、不可再分的值
安裝插件:
pip install pyyaml
PyYAML文檔:https://pyyaml.org/
https://pyyaml.org/wiki/PyYAMLDocumentation
yaml配置文件結構
網上搜搜吧,很多
python操作yaml文件:
https://www.cnblogs.com/BlueSkyyj/p/8143826.html
讀取配置:
import yaml import os # 獲取當前文件路徑 D:/WorkSpace/StudyPractice/Python_Yaml/YamlStudy filePath = os.path.dirname(__file__) print(filePath) # 獲取當前文件的Realpath D:\WorkSpace\StudyPractice\Python_Yaml\YamlStudy\YamlDemo.py fileNamePath = os.path.split(os.path.realpath(__file__))[0] print(fileNamePath) # 獲取配置文件的路徑 D:/WorkSpace/StudyPractice/Python_Yaml/YamlStudy\config.yaml yamlPath = os.path.join(fileNamePath,'config.yaml') print(yamlPath) # 加上 ,encoding='utf-8',處理配置文件中含中文出現亂碼的情況。 f = open(yamlPath,'r',encoding='utf-8') cont = f.read() x = yaml.load(cont) print(type(x)) print(x) print(x['EMAIL']) print(type(x['EMAIL'])) print(x['EMAIL']['Smtp_Server']) print(type(x['EMAIL']['Smtp_Server'])) print(x['DB']) print(x['DB']['host']) print(x.get('DB').get('host')) print(type(x.get('DB')))
寫入配置
# 寫入yaml 文件 # a 追加寫入,w,覆蓋寫入 fw = open(yamlPath,'a',encoding='utf-8') # 構建數據 data = {"cookie1":{'domain': '.yiyao.cc', 'expiry': 1521558688.480118, 'httpOnly': False, 'name': '_ui_', 'path': '/', 'secure': False, 'value': 'HSX9fJjjCIImOJoPUkv/QA=='}} # 裝載數據 yaml.dump(data,fw) # 讀取數據,獲取文件 f = open(yamlPath,'r',encoding='utf-8') # 讀取文件 cont = f.read() # 加載數據 x = yaml.load(cont) # 打印數據 print(x) # 打印讀取寫入的數據 print(x.get("cookie1"))
參考:
https://yaml.org/
http://www.ruanyifeng.com/blog/2016/07/yaml.html