1.yaml安裝
pip install pyyaml
2.基本語言規則
3.yaml檔案書寫格式
pyyaml允許構造任何型別的python物件,以下的格式都可以巢狀使用
#檔案中新增類
!!python/object:類名
#使用 - 建立列表 返回列表 ['a','b','c'],使用多個 - 會多重巢狀
- a- b
- c#返回 [[['a','b','c']]]--
- a - b
- c#返回字典
int:
float
: bstring
: c#返回空
int:
~#強制轉換資料型別,輸出
str:
!!str
123str2
:!!str
true
#使用 | 保留換行 使用 > 摺疊換行
#使用 + 保留文字末尾換行 - 刪除字串末尾換行
#錨點 &(建立多錨點) 和別名 *(引用錨點) 的使用
defaults
:&defaults
#建立adapter
: postgres
host
: localhost
development
:database
<<
:*defaults
# 引用 《表示合併到當前資料,意思是將defaults那一項全部合併到這裡
test
:database
<<
:*defaults
# 引用
# 輸出為
defaults
:adapter
: postgres
host
: localhost
development
:database
adapter
: postgres
host
: localhost
test
:database
adapter
: postgres
host
: localhost
#列表中使用錨點 輸出為 [ 'steve', 'clark', 'brian', 'oren', 'steve' ]
-&showell steve
- clark
- brian
- oren
-*showell
4.讀取yaml檔案
使用如下**讀取yaml檔案
def
read_yaml
(path)
:with
open
(path,
'r', encoding=
'utf8'
)as f:
return yaml.safe_load(f.read(
))
使用yaml.safe_load(),這個只解析基本的yaml標記,用來保證**的安全性,不過這對於平常儲存資料是足夠了,原始碼如下
def
safe_load
(stream)
:"""
parse the first yaml document in a stream
and produce the corresponding python object.
resolve only basic yaml tags. this is known
to be safe for untrusted input.
"""return load(stream, safeloader)
defload
(stream, loader=
none):
""" parse the first yaml document in a stream
and produce the corresponding python object.
"""if loader is
none
: load_warning(
'load'
) loader = fullloader
loader = loader(stream)
try:
return loader.get_single_data(
)finally
: loader.dispose(
)
可以看到safe_load就是在load方法中傳入safeloader的解析器,那麼yaml有些什麼loader呢?
下面是官方的解釋
那麼為什麼要使用safe_load而不使用load呢,下方的帖子做了一些說明,內容是load()可以輕易的呼叫任何python函式,那麼就有可以從yaml讀取到一些惡意**,從而使得程式變得不安全,為了保證程式 的安全性,所以需要使用safe_load來安全的載入子集
yaml基本語法
yaml中的字串預設不用加雙引號或者單引號,如果加了雙引號或者單引號,則單引號和雙引號在yaml中有不同的用法,雙引號不會轉義字串裡面的特殊字元 特殊字元會作為本身想表達的意思 例 張三 n李四 會表示出 張三 然後是乙個換行 然後才是 李四 單引號會轉義字串裡面的特殊字元 例 張三 n李四 表示出...
YAML基本語法
yaml 以資料為中心,比json xml等更適合做配置檔案 配置例子 server port 8081k 空格 v 表示一對鍵值對 空格必須有 以空格的縮進來控制層級關係 只要使左對齊的一列資料,都是同乙個層級的。server port 8081 path hello屬性和值也是大小寫敏感 值的寫...
Yaml基本語法
yaml 以資料為中心,比json xml等更適合做配置檔案 基本規則 1 大小寫敏感 2 使用縮排表示層級關係 3 縮排時不允許使用tab鍵,只允許使用空格。4 縮排的空格數目不重要,只要相同層級的元素左側對齊即可 5 使用 來表示注釋內容 6 文件使用 unicode 編碼作為字元標準編碼,例如...