自动化项目配置或用例文件格式推荐--yaml
生活随笔
收集整理的這篇文章主要介紹了
自动化项目配置或用例文件格式推荐--yaml
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關于yaml
- YAML語言的設計目標,就是方便人類讀寫。如果你想要實現一些用ini不好做到的配置,可以使用yaml格式作為配置文件
- 大小寫敏感
- 使用縮進表示層級關系
- 縮進時不允許使用Tab鍵,只允許使用空格。
- 縮進的空格數目不重要,只要相同層級的元素左側對齊即可
#表示注釋,從它開始到行尾都被忽略
yaml數據結構
1. yaml轉字典
yaml中支持映射或字典的表示,如下:
# 下面格式讀到Python里會是個dict
name: 灰藍
age: 0
job: Tester
輸出:
{'job': 'Tester', 'age': 0, 'name': u'\u7070\u84dd'}
2. yaml轉列表
yaml中支持列表或數組的表示,如下:
# 下面格式讀到Python里會是個list
- 灰藍
- 0
- Tester
輸出:
[u'\u7070\u84dd', 0, 'Tester']
3. 復合結構
字典和列表可以復合起來使用,如下:
# 下面格式讀到Python里是個list里包含dict
- name: 灰藍
age: 0
job: Tester
- name: James
age: 30
輸出:
[{'job': 'Tester', 'age': 0, 'name': u'\u7070\u84dd'}, {'age': 30, 'name': 'James'}]
4. 基本類型
yaml中有以下基本類型:
- 字符串
- 整型
- 浮點型
- 布爾型
- null
- 時間
- 日期
我們寫個例子來看下:
# 這個例子輸出一個字典,其中value包括所有基本類型
str: "Hello World!"
int: 110
float: 3.141
boolean: true # or false
None: null # 也可以用 ~ 號來表示 null
time: 2016-09-22t11:43:30.20+08:00 # ISO8601,寫法百度
date: 2016-09-22 # 同樣ISO8601
輸出:
{'date': datetime.date(2016, 9, 22), 'None': None, 'boolean': True, 'str': 'Hello World!', 'time': datetime.datetime(2016, 9, 22, 3, 43, 30, 200000), 'int': 110, 'float': 3.141}
如果字符串沒有空格或特殊字符,不需要加引號,但如果其中有空格或特殊字符,則需要加引號了
str: 灰藍
str1: "Hello World"
str2: "Hello\nWorld"
輸出:
{'str2': 'Hello\nWorld', 'str1': 'Hello World', 'str': u'\u7070\u84dd'}
這里要注意單引號和雙引號的區別,單引號中的特殊字符轉到Python會被轉義,也就是到最后是原樣輸出了,雙引號不會被Python轉義,到最后是輸出了特殊字符;可能比較拗口,來個例子理解下:
str1: 'Hello\nWorld'
str2: "Hello\nWorld"
# -*- coding: utf-8 -*-
import yaml
y = yaml.load(file('test.yaml', 'r'))
print y['str1']
print y['str2']
輸出:
Hello\nWorld
Hello
World
可以看到,單引號中的’\n’最后是輸出了,雙引號中的’\n’最后是轉義成了回車
讀寫yaml文件
- 安裝:pip install ruamel.yaml
- 使用ruamel.yaml庫里面函數參數Loader=ruamel.yaml.RoundTripLoader和Dumper=ruamel.yaml.RoundTripDumper可以用來保持新生成的yaml文件的表現和輸入文件一致。代碼如下:
from ruamel import yaml
if __name__ == "__main__":
#從yaml文件讀取
with open('father.yml','r',encoding="utf-8") as f:
content = yaml.load(f, Loader=yaml.RoundTripLoader)
# output: <type 'dict'>
print(type(content))
print(content)
content.update({'age': 38})
print(content)
#寫入到yaml文件
with open('ruamel.yml', 'w',,encoding="utf-8") as nf:
yaml.dump(content, nf, Dumper=yaml.RoundTripDumper)
生成新的yaml文件形式如下,正是我們期望的格式:
name: John Smith
age: 38
spouse:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 15
- name: Jenny Smith
age: 12
總結
以上是生活随笔為你收集整理的自动化项目配置或用例文件格式推荐--yaml的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [LOJ#2553][CTSC2018]
- 下一篇: gulp4.0构建任务