yaml基本操作

2021-10-08 17:38:25 字數 2599 閱讀 1254

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 編碼作為字元標準編碼,例如...