最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python YAML文件的讀寫操作詳解

 更新時(shí)間:2022年08月17日 11:37:39   作者:alwaysrun  
這篇文章主要介紹了Python讀寫yaml文件,yaml 是專門用來寫配置文件的語言,非常簡(jiǎn)潔和強(qiáng)大,之前用ini也能寫配置文件,有點(diǎn)類似于json格式,下面關(guān)于Python讀寫yaml文件的詳細(xì)資料,需要的小伙伴可以參考一下

YAML是一種數(shù)據(jù)序列化格式,方便人類閱讀,且容易和腳本語言交互。常用于配置文件,也用于數(shù)據(jù)存儲(chǔ)或傳輸。

YAML格式

YAML三種基本數(shù)據(jù)類型:

1.標(biāo)量:如字符串、整數(shù)和浮點(diǎn)數(shù)、日期

  • 布爾值:“true”、“True”、“TRUE”、“yes”、“Yes"和"YES”,“false”、“False”、“FALSE”、“no”、“No"和"NO”
  • 空:null、Null、~或不指定值;

2.數(shù)組:使用前導(dǎo)符號(hào)-表示,且符號(hào)與值間要有空格;

3.對(duì)象:鍵值對(duì)集合;用冒號(hào)+空格: 分割;

YAML文件

文件基本規(guī)則:

區(qū)分大小寫;

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

  • 縮進(jìn)要用空格(非Tab);
  • 相同層級(jí)元素要左對(duì)齊;

字符串不需要使用引號(hào)括起,但有特殊字符串(如空格、冒號(hào)等)時(shí)必須使用引號(hào);

使用#注釋;

一個(gè)文件中可包含多份YAML文檔:

---(即三個(gè)中劃線)表示一份文檔的開始;

[可選]用...(即三個(gè)小數(shù)點(diǎn))表示一份文檔的結(jié)束;

---
# 這是第一份文檔
one: 1
# 其他內(nèi)容...
...

---
# 這是第二份文檔
two: 2
# 其他內(nèi)容...

YAML操作

Python中有兩個(gè)YAML模塊:PyYAML和ruamel.yaml(pip3 install pyyaml,pip3 install ruamel.yaml)。

讀取

通過load函數(shù)可方便加載文檔內(nèi)容,返回的內(nèi)容可能是字典、列表或空:

import yaml
def readYaml(file):  # -> Union[dict, list, None]:
    with open(file, 'r', encoding='utf-8') as f:
        return yaml.load(f, yaml.Loader)

若文件中有多個(gè)文檔,需要使用load_all來加載;此時(shí)返回的是一個(gè)生成器,需要一次獲取每個(gè)文檔:

def readAllDoc(file) -> list:
    with open(file, 'r', encoding='utf-8') as f:
        docs = yaml.load_all(f, yaml.Loader)
        # return [d for d in docs]
        return list(docs)

存儲(chǔ)

yaml.dump()方法不會(huì)將列表或字典數(shù)據(jù)進(jìn)行轉(zhuǎn)化yaml標(biāo)準(zhǔn)模式。需要通過ruamel.yaml來生成標(biāo)準(zhǔn)的yaml文檔。

import ruamel.yaml
def createYaml(file, data: dict):
    with open(file, 'w', encoding='utf-8') as f:
        writer = ruamel.yaml.YAML()
        writer.indent(mapping=2, sequence=4, offset=2)
        writer.dump(data, f)

通過dump_all可把數(shù)組中的每個(gè)元素序列化為一個(gè)文檔:

def createAllDoc(file, data: list):
    with open(file, 'w', encoding='utf-8') as f:
        writer = ruamel.yaml.YAML()
        writer.indent(mapping=2, sequence=4, offset=2)
        writer.dump_all(data, f)

[{'name': 'Mike', 'age': 12}, {'name': 'luce', 'age': 15}]序列化。

dump會(huì)生成如下包含數(shù)組元素的yaml文件:

  - name: Mike
    age: 12
  - name: luce
    age: 15

dump_all會(huì)生成如下yaml文件(包含兩個(gè)文檔):

name: Mike
age: 12
---
name: luce
age: 15

示例

yaml讀取后為列表或字典。

轉(zhuǎn)字典

讀取的內(nèi)容為一個(gè)字典:

name: mike
age: 25
score: 80.5

返回的值為:

{
  "name": "mike",
  "age": 25,
  "score": 80.5
}

獲取里面值,先判斷是否存在,再讀?。?/p>

if 'name' in data:
  print(data['name'])

轉(zhuǎn)列表

讀取內(nèi)容為一個(gè)列表:

- name: mike
  age: 24
- name: tom
  age: 30

返回的值為:

[
  {
    "name": "mike",
    "age": 24
  },
  {
    "name": "tom",
    "age": 30
  }
]

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

相關(guān)文章

  • pycharm創(chuàng)建django項(xiàng)目出現(xiàn)路徑錯(cuò)誤問題

    pycharm創(chuàng)建django項(xiàng)目出現(xiàn)路徑錯(cuò)誤問題

    在PyCharm中創(chuàng)建Django項(xiàng)目時(shí),若使用之前項(xiàng)目的環(huán)境編譯器,且已修改其根目錄,則新建項(xiàng)目路徑可能出錯(cuò)。解決辦法是在設(shè)置中選擇Project,通過齒輪圖標(biāo)進(jìn)入Show?All,選擇編譯器路徑,點(diǎn)擊筆形圖修改Development?configuration的Root?path為/,以確保新項(xiàng)目能正確創(chuàng)建
    2024-09-09
  • Python圖像銳化與邊緣檢測(cè)之Scharr,Canny,LOG算子詳解

    Python圖像銳化與邊緣檢測(cè)之Scharr,Canny,LOG算子詳解

    圖像銳化和邊緣檢測(cè)主要包括一階微分銳化和二階微分銳化,本文主要講解常見的圖像銳化和邊緣檢測(cè)方法,即Scharr算子、Canny算子和LOG算子,需要的可以參考一下
    2022-12-12
  • matplotlib畫混淆矩陣與正確率曲線的實(shí)例代碼

    matplotlib畫混淆矩陣與正確率曲線的實(shí)例代碼

    混淆矩陣也稱誤差矩陣,是表示精度評(píng)價(jià)的一種標(biāo)準(zhǔn)格式,下面這篇文章主要給大家介紹了關(guān)于matplotlib畫混淆矩陣與正確率曲線的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • 詳解Python中如何寫控制臺(tái)進(jìn)度條的整理

    詳解Python中如何寫控制臺(tái)進(jìn)度條的整理

    這篇文章主要介紹了詳解Python中如何寫控制臺(tái)進(jìn)度條的整理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • 一文帶大家了解python中的換行以及轉(zhuǎn)義

    一文帶大家了解python中的換行以及轉(zhuǎn)義

    這篇文章主要為大家詳細(xì)介紹了python中的換行以及轉(zhuǎn)義的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們深入了解python有一定的幫助,需要的小伙伴可以了解下
    2023-11-11
  • Python中方法定義與方法調(diào)用舉例詳解

    Python中方法定義與方法調(diào)用舉例詳解

    在Python中,方法調(diào)用是編寫程序時(shí)經(jīng)常會(huì)涉及到的一個(gè)重要概念,下面這篇文章主要給大家介紹了關(guān)于Python中方法定義與方法調(diào)用的相關(guān)資料,文章通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Python PIL庫(kù)Image函數(shù)的基本圖像處理操作實(shí)例

    Python PIL庫(kù)Image函數(shù)的基本圖像處理操作實(shí)例

    這篇文章主要為大家介紹了Python PIL庫(kù)Image函數(shù)的基本圖像處理操作實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 詳解Python Matplot中文顯示完美解決方案

    詳解Python Matplot中文顯示完美解決方案

    這篇文章主要介紹了Python Matplot中文顯示完美解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Python face_recognition實(shí)現(xiàn)AI識(shí)別圖片中的人物

    Python face_recognition實(shí)現(xiàn)AI識(shí)別圖片中的人物

    最近碰到了照片識(shí)別的場(chǎng)景,正好使用了face_recognition項(xiàng)目,給大家分享分享。face_recognition項(xiàng)目能做的很多,人臉檢測(cè)功能也是有的,是一個(gè)比較成熟的項(xiàng)目。感興趣的可以了解一下
    2022-01-01
  • python爬蟲beautiful?soup的使用方式

    python爬蟲beautiful?soup的使用方式

    這篇文章主要介紹了python爬蟲beautiful?soup的使用方式,Beautiful?Soup依據(jù)給定的解釋器來解析html文檔,其依據(jù)html中標(biāo)簽把html文檔在內(nèi)存中轉(zhuǎn)化為類似于二叉樹的數(shù)據(jù)結(jié)構(gòu),并通過實(shí)現(xiàn)的查詢方法來查詢二叉樹以得到我們想要的爬蟲數(shù)據(jù)
    2022-08-08

最新評(píng)論

石阡县| 安溪县| 稻城县| 虹口区| 安仁县| 乐昌市| 古蔺县| 宝兴县| 鹤峰县| 钟祥市| 界首市| 建德市| 博客| 尉犁县| 渭南市| 大理市| 潮州市| 兴化市| 外汇| 文山县| 临颍县| 太谷县| 湾仔区| 田阳县| 郓城县| 外汇| 安乡县| 乐安县| 讷河市| 阆中市| 长兴县| 镇沅| 高唐县| 翁牛特旗| 沙湾县| 德兴市| 蒙自县| 凌源市| 海阳市| 华亭县| 仙游县|