markdown 的配置使用 Yaml —— Yet Another Markup Language :另一种标记语言。

简介

YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。
YAML在python语言中有PyYAML安装包。
YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。

它的基本语法规则如下:

  1. 大小写敏感
  2. 使用缩进表示层级关系
  3. 缩进时不允许使用Tab键,只允许使用空格。
  4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  5. # 表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样

YAML 支持的数据结构有三种:

  1. 对象:键值对的集合。键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔
  2. 数组:一组按次序排列的值。数组前加有 “-” 符号,符号与值之间需用空格分隔
  3. 纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期

python 操作 YAML 文件的模块 pyyaml

  1. pyyaml 库不支持读取文档中嵌入的yaml。这是一个提取yaml文本的实用程序函数,因此可以先提取 yaml 的数据对其进行解析

1. 安装

pip install pyyaml

2. yaml 文件示例

apiVersion: apps/v1
kind: Deployment
metadata:name: linux-node02namespace: yaml-demo
spec:replicas: 1selector:matchLabels:app: podinfotemplate:metadata:labels:app: podinfospec:containers:- image: quay.io/stefanprodan/podinfo:0.3.0name: podinfodports:- containerPort: 9898

3. 读取 yaml 文件

import yaml
import osyamlPath = 'config.yaml'
with open(yamlPath,'r',encoding='utf-8') as f:# print(f.read())result = f.read()x = yaml.load(result,Loader=yaml.FullLoader)print(type(x))print(x)
<class 'dict'>
{'apiVersion': 'apps/v1', 'kind': 'Deployment', 'metadata': {'name': 'linux-node02', 'namespace': 'yaml-demo'}, 'spec': {'replicas': 1, 'selector': {'matchLabels': {'app': 'podinfo'}}, 'template': {'metadata': {'labels': {'app': 'podinfo'}}, 'spec': {'containers': [{'image': 'quay.io/stefanprodan/podinfo:0.3.0', 'name': 'podinfod', 'ports': [{'containerPort': 9898}]}]}}}}

备注:如果报警告 YAMLLoadWarning: calling yaml.load() without Loader=… is deprecated

修改代码如下:

import yaml
from Common.dir_config import *fs = open(os.path.join(caps_dir, "data.yaml"),encoding="UTF-8")
datas = yaml.load(fs,Loader=yaml.FullLoader)  #添加后就不警告了

3.1 分段yaml文件中多个文档

  1. 多个文档在一个yaml文件,使用 — 分隔方式来分段,示例如下
---
animal1: dog
age: 2
---
animal2: cat
age: 3
  1. python脚本读取一个yaml文件中多个文档方法

python获取yaml数据时需使用 load_all() 函数来解析全部的文档,再从中读取对象中的数据,load_all() 返回一个生成器

def get_yaml_load_all(yaml_file):# 打开yaml文件file = open(yaml_file, 'r', encoding="utf-8")file_data = file.read()file.close()all_data = yaml.load_all(file_data)for data in all_data:print(data)current_path = os.path.abspath(".")
yaml_path = os.path.join(current_path, "config.yaml")
get_yaml_load_all(yaml_path)
"""结果
{'animal1': 'dog', 'age': 2}
{'animal2': 'cat', 'age': 3}
"""

4. 修改 yaml 文件

import yaml
import osyamlPath = 'config.yaml'
# 修改yaml配置
with open(yamlPath,'r',encoding='utf-8') as f:# print(f.read())result = f.read()x = yaml.load(result,Loader=yaml.FullLoader)# 修改x['metadata']['name'] = 'linux-node02'with open(yamlPath,'w',encoding='utf-8') as w_f:# sort_keys=False,写入yaml的数据则不会排序后写入# allow_unicode 防止中文转义yaml.dump(x, w_f, allow_unicode=True, sort_keys=False)

python 第三方模块 yaml - 处理 YAML (专门用来写配置文件的语言)相关推荐

  1. mac如何导入python第三方库_Mac系统中python idle导入第三方模块成功,ecplise导入python第三方模块失败解决方法...

    遇到一个比较纠结了4个月的问题,一直没有在意,今天实在忍受不了,尝试各种解决办法,终于把这个烦人的问题完美解决,不敢独享,写出来和各位大神共享. 问题:在mac OSx操作系统下,安装了python第 ...

  2. python第三方模块安装路径_Python第三方Window模块文件的几种安装方法

    python安装第三方模块 使用软件管理工具pip python自带了包管理工具,就像手机app商城,91助手等软件的功能一样. python2与python3安装模块的方法相似,值得注意的是,你在p ...

  3. Python: 第三方模块(modules)的安装位置 (2014-08-24 23:19:18)转载▼ 标签: site-packages dist-packages 默认安装目录 分类: Pyth

    Python: 第三方模块(modules)的安装位置 在默认情况下,Python的module的默认安装目录是 /usr/local/lib/pythonX.Y/site-packages.例如,我 ...

  4. Python第三方模块:PyQt5简介

    CSDN话题挑战赛第1期 活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题:Python精彩第三方模块 ...

  5. 因修改了用户文件夹名而无法使用pip安装python第三方模块的两种实用解决方法

    在之前因为把user文件夹里的中文名修改了,同时记得也要把电脑的环境变量修改过来,这个是前提! 然而,环境变量修改也无法使用pip安装python第三方模块,我在这里提供两种实用方法! 下面以安装关于 ...

  6. python 第三方模块

    Chardet,字符编码探测器,可以自动检测文本.网页.xml的编码. colorama,主要用来给文本添加各种颜色,并且非常简单易用. Prettytable,主要用于在终端或浏览器端构建格式化的输 ...

  7. [转载] python 第三方模块

    参考链接: Python | Django-allauth设置和配置 Chardet,字符编码探测器,可以自动检测文本.网页.xml的编码. colorama,主要用来给文本添加各种颜色,并且非常简单 ...

  8. python第三方模块—psutil模块

    系统基础信息采集模块作为监控模块的重要组成部分,能够帮助运维人员了解当前系统的健康程度,同时也是衡量业务的服务质量的依据,比如系统资源吃紧,会直接影响业务的服务质量及用户体验,另外获取设备的流量信息, ...

  9. Python 第三方模块之 pdfkit

    pdfkit,把 HTML+CSS 格式的文件转换成 PDF 格式文档的一个工具. 其实,pdfkit 是 html 转成 pdf 工具包 wkhtmltopdf 的 Python 封装.所以,首先安 ...

最新文章

  1. 半小时训练亿级规模知识图谱,亚马逊AI开源知识图谱嵌入表示框架DGL-KE
  2. 7. Vulnerability exploitation tools (漏洞利用工具 11个)
  3. 内存管理模拟程序c语言,C语言 内存管理详解
  4. SpringBoot集成Redis--配置自定义的RedisCacheManager
  5. 有关Botton的用法(二)
  6. 机器学习之梯度下降法(GD)和坐标轴下降法(CD)
  7. mac os和linux和安卓,在我的安卓手机里,安装Windows和macOS系统
  8. 大话云上“分布式实践”,理解 B、A、C 并不难!
  9. python中unique()与nuniqe()用法
  10. MATLAB与DPS做Mann-Kendall显著性检验
  11. 【转载】Junit4详解一:Junit总体介绍
  12. 密码重置用HTML怎么弄,路由器重设密码怎么设置?
  13. Office2021专业增强版激活报错0xc004f074以及尝试办法
  14. 4399积分小游戏刷分工具帮助
  15. XMind 2021 Mac 去水印教程
  16. 2014福布斯中国富豪榜(名单)
  17. ps最大兼容 计算机一级,Photoshop最大兼容是什么意思?最大兼容使用解析
  18. D. Cloud of Hashtags
  19. arcgis如何打开tif_ArcGIS的目录、内容列表的布局
  20. 最新手机制作抖音/西瓜沙雕动画教程+素材打包

热门文章

  1. 如何成为一位杰出的程序员
  2. C语言return关键字
  3. 分享11款主流的开源编程工具
  4. navicat 导出的sql文件,再导入,运行SQL文件成功,数据库中却没有表
  5. JS-[IIFE闭包]
  6. java 将一段时间分割为两个连续的时间
  7. python 发送邮件的两种方式【终极篇】
  8. wampserver 虚拟主机
  9. css3 loading 效果1
  10. 搭建wordpress开发环境