1.簡介
YAML 的意思其實是:"Yet Another Markup Language"(仍是一種标記語言)。
官方文檔:https://pyyaml.org/wiki/PyYAMLDocumentation
安裝:pip3 install pyyaml
使用import導入:import yaml
2.yaml檔案的讀取
需要讀取的yaml檔案内容如下:
mysql:
host: 127.0.0.1
port: 3306
db: mysql
pwd: mysql
redis:
host: 127.0.0.1
port: 3679
db: redis
pwd: redis
讀取yaml檔案
import yaml
import json
yamlPath = r"E:\code\config.yml"
f = open(yamlPath,'r',encoding='utf-8')
data = yaml.load(f, Loader=yaml.FullLoader)
print(json.dumps(data, sort_keys=True, indent=4, separators=(',', ':'), ensure_ascii=False))
with語句讀取
import yaml
yamlPath = r"E:\code\config.yml"
with open(file=yamlPath, mode="rb") as f:
infos = yaml.load(f, Loader=yaml.FullLoader)
print(infos)
輸出:
{
"mysql":{
"db":"mysql",
"host":"127.0.0.1",
"port":3306,
"pwd":"mysql"
},
"redis":{
"db":"redis",
"host":"127.0.0.1",
"port":3679,
"pwd":"redis"
}
}
3. 檔案寫入
import yaml
yamlPath = r"E:\code\config.yml"
f = open(yamlPath,'a',encoding='utf-8')
data = {
"username": "zs",
"age": 18,
"hobby": ["Basketball", "eat", True]
}
yaml.dump(data, f)
再讀取輸出:
{
"age":18,
"hobby":[
"Basketball",
"eat",
true
],
"mysql":{
"db":"mysql",
"host":"127.0.0.1",
"port":3306,
"pwd":"mysql"
},
"redis":{
"db":"redis",
"host":"127.0.0.1",
"port":3679,
"pwd":"redis"
},
"username":"zs"
}
FAQ:
警告描述:使用 yaml.load(f)方法讀取檔案時,不傳Loader參數會有警告
警告原因:YAML 5.1版本後棄用了yaml.load(file)這個用法,因為覺得很不安全,5.1版本之後就修改了需要指定Loader,通過預設加載器(FullLoader)禁止執行任意函數,該load函數也變得更加安全
警告解決:使用參數Loader, 取值參考:https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation