您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python中yaml文件的讀取方法是什么的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Python中yaml文件的讀取方法是什么文章都會有所收獲,下面我們一起來看看吧。
yaml其實也類似于 json、txt ,它們都屬于一種文本格式。在我們的實際工作中, yaml 文件經(jīng)常作為服務(wù)期配置文件來使用。 比如一些定義好的內(nèi)容,并且不會修改的信息,我們就可以通過定義 yaml 文件,然后通過讀取這樣的文件,將數(shù)據(jù)導(dǎo)入到我們的服務(wù)中進行使用。
由于 yaml 文件一般作為配置文件使用,所以較少會修改。故而該章節(jié),我們僅學(xué)習(xí) yaml 文件的讀取。
==首先大家需要知道,yaml 不是標(biāo)記語言,跟 json 類似,yaml 的用途也是對數(shù)據(jù)進行序列化。(內(nèi)容格式為鍵值對,但是與 dict 數(shù)據(jù)類型的鍵值對顯示的樣式有所區(qū)別)。內(nèi)容格式人性化,較易讀.==yaml 文件格式后綴為 .yaml。
注意:YAML 有一個小的怪癖。所有的 YAML 文件開始行都應(yīng)該是 —。這是 YAML 格式的一部分, 表明一個文件的開始。>
YAML語法格式如下:
1、大小寫敏感
2、使用縮進表示層級關(guān)系
3、縮進的空格數(shù)目不重要,只要相同層級的元素左側(cè)對齊即可,通常開頭縮進兩個空格
4、不支持Tab鍵制表符縮進,只使用空格縮進
5、字符后縮進一個空格,如冒號,逗號,短橫桿(-)等
6、"—“表示YAML格式,一個文件的開始,用于分隔文件間
7、”#”表示注釋 (yaml文件只有行注釋)
YAML 支持的數(shù)據(jù)結(jié)構(gòu)有三種。
對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
純量(scalars):單個的、不可再分的值
下面對這三種數(shù)據(jù)結(jié)構(gòu)做詳細(xì)介紹:
yaml 中的值有以下基本類型:
字符串
整形
浮點型
布爾型
null
時間
日期
yaml 文件內(nèi)容格式示例如下:
# 注釋 # 1-1、字典 鍵: 值 username: xiaoming # 冒號后面是空格 password: 123456 info: 配置 # 中文---不建議使用,有可能會亂碼 # 1-2、字典嵌套 NAME_PSW: name:xiaoming password:123456 # 2-1、列表格式 -10 -20 -30 # 2-2、列表嵌套 -10 -20 - -100 -200 # 3-1、列表中套字典 -10 -20 - name: tom password: 123456 # 4-1、字典套列表 name: TOM info: -10 -20 -30 # 5-1、引號 如果是有英文字母或者中文的,不加引號也是字符串 info: "HELLO word" # 引號可以不加 # 5-2、什么加引號:如果有特俗字符\n 不加引號就原字符樣式輸出 如果顯示特殊字符效果:就加雙引號 info: "HELLO\nwoord" # 6-1、引用 一個數(shù)據(jù)可以使用很多地方,使用變量 # & 變量名 定義變量 # *變量名 引用變量 name: &a tom name1: *a # 7-1、能不能多個YAML 寫在一起,有字典也有列表 ,加分隔符 --- -10 -20 -30 --- name: sq # 8-1、yamL文件可以有YAML DATA: conf.yaml
pyyaml 的安裝:pip install PyYAML [若安裝失敗,參考 - 包與模塊 章節(jié)的 如何安裝第三方包]
pyyaml 的導(dǎo)入:import pyyaml
用法如下:
file = open(yaml_file, 'r') daya = yaml.load(file.read()) file.close
返回字典類型(示例):
{ 'name': '托尼·史塔克' 'age': '52' 'sex': 'man' }
創(chuàng)建一個 test.yaml 文件,內(nèi)容如下:
name: 托尼·史塔克 # 字符串引號可以不加 【這里的縮進使用的是tab鍵,所以如果直接復(fù)制粘貼,在運行下方腳本時會報錯,記得改成空格】 invention: - Iron Man Armor - Arc reactor - Ultron teammate: - Steven Rogers - Thor Odinson - Natasha Romanoff - Bruce Banner - Clint Barton apprentice: 彼得·帕克 wife: 佩珀·波茲 father: 霍華德·史塔克
創(chuàng)建一個 test_yaml.py 文件,讀取 test.yaml 文件:
# coding:utf-8 import yaml def read(path): with open(path, 'r') as file: data = file.read() result = yaml.load(data) # result = yaml.load(data, Loader=yaml.FullLoader) return result if __name__ == '__main__': result = read('test.yaml') print(result)
這里執(zhí)行的時候出現(xiàn)了一個報錯 :TypeError: load() missing 1 required positional argument: 'Loader'。 如下圖:
這是因為在 YAML 5.1版本后棄用了yaml.load(file)這個用法,因為覺得很不安全,5.1版本之后就修改了需要指定Loader,通過默認(rèn)加載器(FullLoader)禁止執(zhí)行任意函數(shù),該load函數(shù)也變得更加安全。所以我們需要將 result = yaml.load(data) 改為 result = yaml.load(data, Loader=yaml.FullLoader) 。
解決該 TypeError 不單單 只有 yaml.load(data, Loader=yaml.FullLoader) 這一個方法。
以下三選一即可解決該 TypeError
yaml.safe_load(file.read()) yaml.load(file.read(), Loader=yaml.FullLoader) yaml.load(file.read(), Loader=yaml.CLoader)
運行結(jié)果如下:
關(guān)于“Python中yaml文件的讀取方法是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Python中yaml文件的讀取方法是什么”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。