什么是YAML
YAML參考了其他多種語言,包括:XML、C語言、Python、Perl以及電子郵件格式RFC2822芦劣。
Clark Evans在2001年5月在首次發(fā)表了這種語言粗俱,另外Ingy d?t Net與Oren Ben-Kiki也是這語言的共同設(shè)計者。
YAML是"YAML Ain't a Markup Language"(YAML不是一種置標語言)的遞歸縮寫虚吟。
在開發(fā)的這種語言時寸认,YAML 的意思其實是:"Yet Another Markup Language"(仍是一種置標語言)签财,
格式及示例
數(shù)據(jù)結(jié)構(gòu)可以用類似大綱的縮排方式呈現(xiàn),結(jié)構(gòu)通過縮進來表示偏塞,連續(xù)的項目通過減號“-”來表示唱蒸,map結(jié)構(gòu)里面的key/value對用冒號“:”來分隔。
示例如下:
開源優(yōu)測信息:
微信公眾號:
公眾號: DeepTest
中文名: 開源優(yōu)測
創(chuàng)建者: 苦葉子
內(nèi)容系列:
- 接口測試
- jmeter
- selenium
- 快學python3
- 大數(shù)據(jù)測試
- 雜談系列
web站點:
中文名: 開源優(yōu)測社區(qū)
狀態(tài): 已暫停
城市: 廣州
網(wǎng)址: www.testingunion.com
注意:
- 字符串不一定要用雙引號標識
- 在縮排中空白字符的數(shù)目并不是非常重要灸叼,只要相同階層的元素左側(cè)對齊就可以了(不過不能使用TAB字符)
- 允許在文件中加入選擇性的空行神汹,以增加可讀性
- 在一個檔案中,可同時包含多個文件古今,并用“——”分隔
- 選擇性的符號“...”可以用來表示檔案結(jié)尾(在利用串流的通訊中屁魏,這非常有用,可以在不關(guān)閉串流的情況下捉腥,發(fā)送結(jié)束訊號)
PyYaml
PyYAML是一個Python的YAML解析器氓拼。
如何安裝? 請使用如下命令進行安裝
pip install PyYaml
官方文檔地址:
python yaml幾個示例
下面先看一個如何將yaml格式的字符串轉(zhuǎn)換成字典,再將字典轉(zhuǎn)換成字符串的示例:
#-*- coding:utf-8 -*-
__author__ = "苦葉子"
import yaml
if __name__ == "__main__":
print("python yaml基本示例")
document = """
公眾號: 開源優(yōu)測
基本信息:
創(chuàng)建人: 苦葉子
id: DeepTest
"""
# 將yaml格式內(nèi)容 轉(zhuǎn)換成 dict類型
load = yaml.load(document)
print(type(load))
print(load)
print("---" * 25)
# 將python對象轉(zhuǎn)換成為yaml格式文檔
output = yaml.dump(load)
print(type(output))
print(output)
說明:
load:將yaml格式的字符串轉(zhuǎn)換成Python對象
dump:將Python對象轉(zhuǎn)換成yaml格式文檔
多段yaml格式內(nèi)容解析用用到load_all函數(shù)抵碟,示例如下:
#-*- coding:utf-8 -*-
__author__ = "苦葉子"
import yaml
import codecs
if __name__ == "__main__":
print("python yaml基本示例")
fp = codecs.open("yaml_data.yaml", "r", "utf-8")
document = fp.read()
fp.close()
# 將yaml格式內(nèi)容 轉(zhuǎn)換成 dict類型
load = yaml.load_all(document)
# 遍歷迭代器
for data in load:
print(type(data))
print(data)
print("---" * 25)
# 將python對象轉(zhuǎn)換成為yaml格式文檔
output = yaml.dump(data)
print(type(output))
print(output)
說明
load_all返回的是一個迭代器對象桃漾,需要自己去遍歷獲取每一個段的轉(zhuǎn)換后才python對象。
請自己對比上述兩個示例的一些細節(jié)區(qū)別拟逮,加強對yaml應用和基本解析的理解撬统。
小結(jié)
當然了python和yaml的結(jié)合還有很多很多的特性,例如在yaml格式的內(nèi)容里直接寫python類型等等唱歧,這些大家都可以去自行研究宪摧。
就我們后續(xù)要用的先掌握這些暫時足夠,對于更深入的颅崩,屆時再結(jié)合實際的應用進行演示几于。