欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python學(xué)習(xí)之yaml文件的讀取詳解

 更新時(shí)間:2022年03月28日 11:46:21   作者:渴望力量的哈士奇  
yaml其實(shí)也類似于 json、txt ,它們都屬于一種文本格式。在我們的實(shí)際工作中, yaml 文件經(jīng)常作為服務(wù)期配置文件來(lái)使用。本文將為大家介紹一些Python讀取yaml文件的方法,需要的可以參考一下

yaml 文件的應(yīng)用場(chǎng)景與格式介紹

yaml 文件的應(yīng)用場(chǎng)景

yaml其實(shí)也類似于 json、txt ,它們都屬于一種文本格式。在我們的實(shí)際工作中, yaml 文件經(jīng)常作為服務(wù)期配置文件來(lái)使用。 比如一些定義好的內(nèi)容,并且不會(huì)修改的信息,我們就可以通過(guò)定義 yaml 文件,然后通過(guò)讀取這樣的文件,將數(shù)據(jù)導(dǎo)入到我們的服務(wù)中進(jìn)行使用。

由于 yaml 文件一般作為配置文件使用,所以較少會(huì)修改。故而該章節(jié),我們僅學(xué)習(xí) yaml 文件的讀取。

yaml 文件的格式

==首先大家需要知道,yaml 不是標(biāo)記語(yǔ)言,跟 json 類似,yaml 的用途也是對(duì)數(shù)據(jù)進(jìn)行序列化。(內(nèi)容格式為鍵值對(duì),但是與 dict 數(shù)據(jù)類型的鍵值對(duì)顯示的樣式有所區(qū)別)。內(nèi)容格式人性化,較易讀.==yaml 文件格式后綴為 .yaml。

注意:YAML 有一個(gè)小的怪癖。所有的 YAML 文件開(kāi)始行都應(yīng)該是 —。這是 YAML 格式的一部分, 表明一個(gè)文件的開(kāi)始。>

YAML語(yǔ)法格式如下:

1、大小寫敏感

2、使用縮進(jìn)表示層級(jí)關(guān)系

3、縮進(jìn)的空格數(shù)目不重要,只要相同層級(jí)的元素左側(cè)對(duì)齊即可,通常開(kāi)頭縮進(jìn)兩個(gè)空格

4、不支持Tab鍵制表符縮進(jìn),只使用空格縮進(jìn)

5、字符后縮進(jìn)一個(gè)空格,如冒號(hào),逗號(hào),短橫桿(-)等

6、"—“表示YAML格式,一個(gè)文件的開(kāi)始,用于分隔文件間

7、”#”表示注釋 (yaml文件只有行注釋)

YAML 支持的數(shù)據(jù)結(jié)構(gòu)有三種。

對(duì)象:鍵值對(duì)的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)

數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)

純量(scalars):?jiǎn)蝹€(gè)的、不可再分的值

下面對(duì)這三種數(shù)據(jù)結(jié)構(gòu)做詳細(xì)介紹:

yaml 中的值有以下基本類型:

  • 字符串
  • 整形
  • 浮點(diǎn)型
  • 布爾型
  • null
  • 時(shí)間
  • 日期

yaml 文件內(nèi)容格式示例如下:

# 注釋

# 1-1、字典  鍵: 值
username: xiaoming  # 冒號(hào)后面是空格
password: 123456
info: 配置  # 中文---不建議使用,有可能會(huì)亂碼

# 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、引號(hào) 如果是有英文字母或者中文的,不加引號(hào)也是字符串
info: "HELLO word"  # 引號(hào)可以不加 

# 5-2、什么加引號(hào):如果有特俗字符\n 不加引號(hào)就原字符樣式輸出    如果顯示特殊字符效果:就加雙引號(hào)
 
info: "HELLO\nwoord"


# 6-1、引用 一個(gè)數(shù)據(jù)可以使用很多地方,使用變量
# & 變量名   定義變量
# *變量名   引用變量
name: &a tom
name1: *a


# 7-1、能不能多個(gè)YAML 寫在一起,有字典也有列表  ,加分隔符  ---
-10
-20
-30
---
name: sq

# 8-1、yamL文件可以有YAML
DATA: conf.yaml

第三方包 - pyyaml

pyyaml 的安裝:pip install PyYAML [若安裝失敗,參考 - 包與模塊 章節(jié)的 如何安裝第三方包]

pyyaml 的導(dǎo)入:import pyyaml

讀取 yaml 文件的方法

用法如下:

file = open(yaml_file, 'r')
daya = yaml.load(file.read())
file.close

返回字典類型(示例):

{
    'name': '托尼·史塔克'
    'age': '52'
    'sex': 'man'
}

yaml文件讀取演示案例

創(chuàng)建一個(gè) test.yaml 文件,內(nèi)容如下:

name:
  托尼·史塔克    # 字符串引號(hào)可以不加 【這里的縮進(jìn)使用的是tab鍵,所以如果直接復(fù)制粘貼,在運(yùn)行下方腳本時(shí)會(huì)報(bào)錯(cuò),記得改成空格】
invention:
  - Iron Man Armor
  - Arc reactor
  - Ultron
teammate:
  - Steven Rogers
  - Thor Odinson
  - Natasha Romanoff
  - Bruce Banner
  - Clint Barton
apprentice:
  彼得·帕克
wife:
  佩珀·波茲
father:
  霍華德·史塔克

創(chuàng)建一個(gè) 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í)行的時(shí)候出現(xiàn)了一個(gè)報(bào)錯(cuò) :TypeError: load() missing 1 required positional argument: 'Loader'。 如下圖:

這是因?yàn)樵?YAML 5.1版本后棄用了yaml.load(file)這個(gè)用法,因?yàn)橛X(jué)得很不安全,5.1版本之后就修改了需要指定Loader,通過(guò)默認(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) 這一個(gè)方法。

以下三選一即可解決該 TypeError

yaml.safe_load(file.read())

yaml.load(file.read(), Loader=yaml.FullLoader)

yaml.load(file.read(), Loader=yaml.CLoader)

運(yùn)行結(jié)果如下:

到此這篇關(guān)于Python學(xué)習(xí)之yaml文件的讀取詳解的文章就介紹到這了,更多相關(guān)Python yaml讀取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用PyInstaller將python程序.py轉(zhuǎn)為.exe的方法詳解

    利用PyInstaller將python程序.py轉(zhuǎn)為.exe的方法詳解

    這篇文章主要給大家介紹了利用PyInstaller將python程序.py轉(zhuǎn)為.exe的方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • python numpy實(shí)現(xiàn)多次循環(huán)讀取文件 等間隔過(guò)濾數(shù)據(jù)示例

    python numpy實(shí)現(xiàn)多次循環(huán)讀取文件 等間隔過(guò)濾數(shù)據(jù)示例

    這篇文章主要介紹了python numpy實(shí)現(xiàn)多次循環(huán)讀取文件 等間隔過(guò)濾數(shù)據(jù)示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • python3實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)之BeautifulSoup使用詳解

    python3實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)之BeautifulSoup使用詳解

    這篇文章主要介紹了python3實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)之BeautifulSoup使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Django自定義用戶認(rèn)證示例詳解

    Django自定義用戶認(rèn)證示例詳解

    這篇文章主要給大家介紹了關(guān)于Django自定義用戶認(rèn)證的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • 在Python的Django框架的視圖中使用Session的方法

    在Python的Django框架的視圖中使用Session的方法

    這篇文章主要介紹了在Python的Django框架的視圖中使用Session的方法,包括相關(guān)的設(shè)置測(cè)試Cookies的方法,需要的朋友可以參考下
    2015-07-07
  • Python抓取手機(jī)號(hào)歸屬地信息示例代碼

    Python抓取手機(jī)號(hào)歸屬地信息示例代碼

    之前看到一篇文章有提供手機(jī)號(hào)歸屬地?cái)?shù)據(jù)庫(kù)的下載,由于手機(jī)號(hào)號(hào)段一直在增加,所以提供的數(shù)據(jù)基本上隨時(shí)會(huì)過(guò)期,更理想的方法是從網(wǎng)上定期抓取其他站點(diǎn)維護(hù)的經(jīng)緯度信息。下面這篇文章就給大家介紹了如何利用Python抓取手機(jī)歸屬地信息,有需要的朋友們可以參考借鑒。
    2016-11-11
  • python中class類與方法的用法實(shí)例詳解

    python中class類與方法的用法實(shí)例詳解

    類(class)是python中很重要的一個(gè)概念,也是我們面象對(duì)象編程中最重要的概念主之一,這篇文章主要給大家介紹了關(guān)于python中class類與方法用法的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • python包pdfkit(wkhtmltopdf)?將HTML轉(zhuǎn)換為PDF的操作方法

    python包pdfkit(wkhtmltopdf)?將HTML轉(zhuǎn)換為PDF的操作方法

    pdfkit,把HTML+CSS格式的文件轉(zhuǎn)換成PDF格式文檔的一種工具。它就是html轉(zhuǎn)成pdf工具包wkhtmltopdf的Python封裝。所以,必須手動(dòng)安裝wkhtmltopdf,這篇文章主要介紹了python包pdfkit(wkhtmltopdf)將HTML轉(zhuǎn)換為PDF,需要的朋友可以參考下
    2022-04-04
  • python之實(shí)現(xiàn)兩個(gè)或多個(gè)列表相加

    python之實(shí)現(xiàn)兩個(gè)或多個(gè)列表相加

    這篇文章主要介紹了python之實(shí)現(xiàn)兩個(gè)或多個(gè)列表相加方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python中re模塊知識(shí)點(diǎn)總結(jié)

    python中re模塊知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于python中re模塊知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01

最新評(píng)論