yaml檔案讀取load()、寫入dump()
yaml簡介
1、yaml [ˈjæməl]: Yet Another Markup Language :另一種標記語言。yaml 是專門用來寫配置檔案的語言,非常簡潔和強大。類似於json格式
2、在自動化測試中,通常使用yaml檔案來編寫自動化測試用例。例如:
3、yaml基本語法規則:
- 大小寫敏感
- 使用縮排表示層級關係
- 縮排時不允許使用Tab鍵,只允許使用空格。
- 縮排的空格數目不重要,只要相同層級的元素左側對齊即可
- #表示註釋,從這個字元一直到行尾,都會被解析器忽略,這個和python的註釋一樣
4、yaml支援的資料結構有三種:
- 物件:鍵值對的集合,又稱為對映(mapping)/ 雜湊(hashes) / 字典(dictionary)
- 陣列:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
- 純量(scalars):單個的、不可再分的值。字串、布林值、整數、浮點數、Null、時間、日期
5、python中,檔案字尾名為.yml與.yaml的檔案表示作用相同,即yaml檔案;一般來說,最常用的使用.yml作為yaml檔案字尾名。例如:
安裝yaml
使用pip安裝pyyaml模組:
pip install pyyaml
yaml檔案支援的資料結構舉例
1、yaml裡面的鍵值對,也就是python裡面的字典(dict)資料型別;比如python字典:
# python3.6 { "user": "admin", "psw": "123456, }
在yaml檔案裡可以這樣寫:
# yaml user: admin psw: 123456
2、字典巢狀字典:
# python3.6 "nb1": { "user": "admin", "psw": "123456, }
yaml檔案裡可以這樣寫:
# yaml nb1: user: admin psw: 123456
yaml檔案中的序列(list)
yaml檔案裡面寫一個數組,需要在前面加一個‘-’符號。如下:
- admin1: 123456 - admin2: 111111 - admin3: 222222
對應python裡面的list資料型別:
[{'admin1': 123456}], [{'admin2': 111111}], [{'admin3': 222222}]
注意:數字讀出來的是int或float型別
yaml檔案中的純量(str)
1、int和float型別的數字
n1: 12.30
對應python中的
{'n1': 12.3}
2、布林值用true和false表示
n2: true
n3: false
對應python中的
{'n2': True, 'n3': False}
注意:與從文字中讀出來的json格式的字串通過反序列化轉為python資料型別相同。
3、None用~表示。
n4: ~
對應python中的
{'n4': None}
注意:從文字中讀取出來的json格式的字串是null的時候轉換成python資料型別是None。
4、時間採用 ISO8601 格式
time1: 2001-12-14t21:59:43.10-05:00
對應python中的
{'time1': datetime.datetime(2001, 12, 15, 2, 59, 43, 100000)}
5、日期採用複合 iso8601 格式的年、月、日表示。
date1: 2017-07-31
對應python中的
{'date1': datetime.date(2017, 7, 31)}
6、使用兩個感嘆號,強制轉換資料型別。
# int轉str n6: !!str 123
對應python中的
{'n6': '123'}
# bool值轉str n7: !!str true
對應python中的
{'n7': 'true'}
使用python的load()方法讀取yaml檔案
# coding:utf-8 import yaml import os # 獲取當前指令碼所在資料夾路徑 curPath = os.path.dirname(os.path.realpath(__file__)) # 獲取yaml檔案路徑 yamlPath = os.path.join(curPath, "cfgyaml.yaml") # open方法開啟直接讀出來 f = open(yamlPath, 'r', encoding='utf-8') cfg = f.read() print(type(cfg)) # 讀出來是字串 print(cfg) d = yaml.load(cfg) # 用load方法將json字串轉換字典型別 print(d) print(type(d))
執行結果:
https://www.cnblogs.com/yoyoketang/p/8874392.html
https://blog.csdn.net/liufuren620/article/details/103644413
https://blog.csdn.net/GeneralJing/article/details/108814196
去期待陌生,去擁抱驚喜。