yaml是乙個專門用來寫配置檔案的語言。
1. yaml檔案規則
2. yaml檔案資料結構1. 前提條件
python中讀取yaml檔案前需要安裝pyyaml和匯入yaml模組:
2. 讀取yaml檔案資料
python通過open方式讀取檔案資料,再通過load函式將資料轉化為列表或字典;
import yaml
import os
def
get_yaml_data
(yaml_file):
# 開啟yaml檔案
print(「獲取yaml檔案資料」)
file = open(yaml_file, 『r』, encoding=「utf-8」)
file_data = file.read()
file.close()
print(file_data)
print("型別:", type(file_data))
# 將字串轉化為字典或列表
print("***轉化yaml資料為字典或列表***")
data = yaml.load(file_data)
print(data)
print("型別:", type(data))
return data
current_path = os.path.abspath(".")
yaml_path = os.path.join(current_path, 「config.yaml」)
get_yaml_data(yaml_path)
***獲取yaml檔案資料*** # yaml鍵值對:即python中字典 usr: my psw: 123455 型別:***轉化yaml資料為字典或列表*** 型別:"""
3. yaml檔案資料為鍵值對
(1)yaml檔案中內容為鍵值對:
# yaml鍵值對:即python中字典
usr: my
psw: 123455
s: " abc\n"
python解析yaml檔案後獲取的資料:
(2)yaml檔案中內容為「鍵值對'巢狀"鍵值對"
# yaml鍵值對巢狀:即python中字典巢狀字典
usr1:
name: a
psw: 123
usr2:
name: b
psw: 456
python解析yaml檔案後獲取的資料:
, 'usr2': }
(3)yaml檔案中「鍵值對」中巢狀「陣列」
# yaml鍵值對中巢狀陣列
usr3:
- a- b
- cusr4:
- b
python解析yaml檔案後獲取的資料:
4. yaml檔案資料為陣列
(1)yaml檔案中內容為陣列
# yaml陣列
- a- b
- 5
python解析yaml檔案後獲取的資料:
['a', 'b', 5]
(2)yaml檔案「陣列」中巢狀「鍵值對」
# yaml"陣列"中巢狀"鍵值對"
- usr1: aaa
- psw1: 111
usr2: bbb
psw2: 222
python解析yaml檔案後獲取的資料:
[, ]
5. yaml檔案中基本資料型別:# 純量
s_val: name # 字串:
spec_s_val: "name\n"
# 特殊字串:
bol_val: true
# 布林值:
nul_val: null
# null值:
nul_val1: ~ # null值:
time_val: 2018
-03-01t11:33:22.55
-06:00
# 時間值:
date_val: 2019
-01-10
# 日期值:
6. yaml檔案中引用
yaml檔案中內容
animal3: &animal3 fish
test: *animal3
python讀取的資料
1. 多個文件在乙個yaml檔案,使用 --- 分隔方式來分段
如:yaml檔案中資料
# 分段yaml檔案中多個文件
---animal1: dog
age: 2
---animal2: cat
age: 3
2. python指令碼讀取乙個yaml檔案中多個文件方法
python獲取yaml資料時需使用load_all函式來解析全部的文件,再從中讀取物件中的資料
# yaml檔案中含有多個文件時,分別獲取文件中資料
defget_yaml_load_all
(yaml_file):
# 開啟yaml檔案
file = open(yaml_file, 'r', encoding="utf-8")
file_data = file.read()
file.close()
all_data = yaml.load_all(file_data)
for data in all_data:
print(data)
current_path = os.path.abspath(".")
yaml_path = os.path.join(current_path, "config.yaml")
get_yaml_load_all(yaml_path)
"""結果
"""
1. 直接匯入yaml(即import yaml)生成的yaml文件
通過yaml.dump()方法不會將列表或字典資料進行轉化yaml標準模式,只會將資料生成到yaml文件中
# 將python物件生成yaml文件
import yaml
defgenerate_yaml_doc
(yaml_file):
py_object =
file = open(yaml_file, 'w', encoding='utf-8')
yaml.dump(py_object, file)
file.close()
current_path = os.path.abspath(".")
yaml_path = os.path.join(current_path, "generate.yaml")
generate_yaml_doc(yaml_path)
"""結果
school: zhang
students: [a, b]
"""
2. 使用ruamel模組中的yaml方法生成標準的yaml文件
(1)使用ruamel模組中yaml前提條件
(2)ruamel模組生成yaml文件
def
generate_yaml_doc_ruamel
(yaml_file):
from ruamel import yaml
py_object =
file = open(yaml_file, 'w', encoding='utf-8')
yaml.dump(py_object, file, dumper=yaml.roundtripdumper)
file.close()
current_path = os.path.abspath(".")
yaml_path = os.path.join(current_path, "generate.yaml")
generate_yaml_doc_ruamel(yaml_path)
"""結果
school: zhang
students:
- a- b
"""
(3)ruamel模組讀取yaml文件
# 通過from ruamel import yaml讀取yaml檔案
defget_yaml_data_ruamel
(yaml_file):
from ruamel import yaml
file = open(yaml_file, 'r', encoding='utf-8')
data = yaml.load(file.read(), loader=yaml.loader)
file.close()
print(data)
current_path = os.path.abspath(".")
yaml_path = os.path.join(current_path, "dict_config.yaml")
get_yaml_data_ruamel(yaml_path)
Python yaml檔案操作
一 yaml檔案的使用注意事項 載入yaml檔案函式 data yaml.load f 我在實際測試中用的是yaml.safe load f 可以正常,用yaml.load f 會報錯因為python3之後已經改成了safe load f 1.首先yaml檔案裡的格式必須為字典,否則會報錯 2.ya...
python yaml的基本使用
1 希望輸出全為字典的格式 tagid 3 json null 則應該在yaml檔案中寫成 get method post url params access token tagid 3 json 2 若希望tagid為乙個列表,如下 class 則yaml檔案的寫法 tagid name clas...
Python yaml 使用的包
通常 python 使用的 yaml 檔案處理的包有 2 個。可以理解為 pyyaml 是 python 自帶的 yaml 資料處理庫,ruamel.yaml 是 pyyaml 的增強版。因此使用 ruamel.yaml 的會比較多,而且很多語法和函式都是通用的。pyyaml 和 ruamel.ya...