日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

自动化项目配置或用例文件格式推荐--yaml

發布時間:2023/10/11 综合教程 97 老码农
生活随笔 收集整理的這篇文章主要介紹了 自动化项目配置或用例文件格式推荐--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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。