1. 程式人生 > 其它 >yaml檔案讀取load()、寫入dump()

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

去期待陌生,去擁抱驚喜。