中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python?YAML文件的讀寫操作實例分析

發布時間:2022-08-17 15:54:01 來源:億速云 閱讀:204 作者:iii 欄目:開發技術

本篇內容主要講解“Python YAML文件的讀寫操作實例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python YAML文件的讀寫操作實例分析”吧!

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

YAML格式

YAML三種基本數據類型:

1.標量:如字符串、整數和浮點數、日期

  • 布爾值:“true”、“True”、“TRUE”、“yes”、“Yes"和"YES”,“false”、“False”、“FALSE”、“no”、“No"和"NO”

  • 空:null、Null、~或不指定值;

2.數組:使用前導符號-表示,且符號與值間要有空格;

3.對象:鍵值對集合;用冒號+空格: 分割;

YAML文件

文件基本規則:

區分大小寫;

使用縮進表示層級關系:

  • 縮進要用空格(非Tab);

  • 相同層級元素要左對齊;

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

使用#注釋;

一個文件中可包含多份YAML文檔:

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

[可選]用...(即三個小數點)表示一份文檔的結束;

---
# 這是第一份文檔
one: 1
# 其他內容...
...

---
# 這是第二份文檔
two: 2
# 其他內容...

YAML操作

Python中有兩個YAML模塊:PyYAML和ruamel.yaml(pip3 install pyyamlpip3 install ruamel.yaml)。

讀取

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

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

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

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)

存儲

yaml.dump()方法不會將列表或字典數據進行轉化yaml標準模式。需要通過ruamel.yaml來生成標準的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可把數組中的每個元素序列化為一個文檔:

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會生成如下包含數組元素的yaml文件:

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

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

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

示例

yaml讀取后為列表或字典。

轉字典

讀取的內容為一個字典:

name: mike
age: 25
score: 80.5

返回的值為:

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

獲取里面值,先判斷是否存在,再讀取:

if 'name' in data:
  print(data['name'])
轉列表

讀取內容為一個列表:

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

返回的值為:

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

到此,相信大家對“Python YAML文件的讀寫操作實例分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐边县| 岳西县| 罗江县| 华宁县| 揭西县| 武强县| 万盛区| 土默特右旗| 乳源| 宜黄县| 民勤县| 大余县| 双桥区| 牡丹江市| 增城市| 贵南县| 灵武市| 曲沃县| 浦城县| 桂东县| 许昌县| 尚志市| 晋州市| 廊坊市| 油尖旺区| 金平| 南部县| 潼南县| 东港市| 墨竹工卡县| 军事| 焦作市| 禄劝| 丹江口市| 闻喜县| 德保县| 长宁县| 邓州市| 刚察县| 肇庆市| 沙田区|