关键词:
简介
yaml[?j?m?l]: Yet Another Markup Language。yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文件,看了yaml后,发现这个更直观,更方便,有点类似于json格式
基本语法:
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用tab键,只能使用空格
- 缩进的空格数目不重要,只要相同层级的元素左对齐即可
- ‘#‘ 表示注释,与python类似
支持的数据结构:
- 对象: 键值对的集合,又称字典
- 数组: 列表/序列
- 纯量: 单个的、不可再分的值。字符串、布尔值、整数、浮点数
安装
pip instal pyyaml
键值对(dict)
# python
"user": "admin",
"pwd": "123456",
# yaml
user: admin
pwd: 123456
字典嵌套字典
# python
"nb1":
"user": "admin",
"pwd": "123456",
# yaml
nb1:
user: admin
pwd: 123456
序列
yaml里面写一个数组,前面加一个‘-‘符号
- admin1: 123
- admin2: 345
纯量
- int/float:
n1: 12.30
- bool:
n2: true
- None:
n4: ~
- 强制转换类型:
n6: !!str 123
, int->str
混合使用
- list嵌套dict
# yaml
- user: admin1
pwd: '123'
- user: admin2
pwd: '234'
- user: admin3
pwd: '413'
用python读出来的结果
[
'user': 'admin1', 'pwd': '123',
'user': 'admin2', 'pwd': '234',
'user': 'admin3', 'pwd': '413'
]
yaml.load()出现警告的解决办法
Warning: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
YAML 5.1版本后弃用了yaml.load(file)这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader,通过默认加载??器(FullLoader)禁止执行任意函数,该load函数也变得更加安全
e.g.
yaml.load(input, Loader=yaml.FullLoader)
实际应用例子
有一个yaml配置文件,希望能让用户自定义神经网络,而不是使用完整的task_list,并且对于这些自定义的网络,也采用自定义的数据类型进行量化
# test.aml
caffe_models:
- imagenet
- mobilenet_v2
- resnet50
- inception_v3
- imagenet
- yolo_v2
- alexnet
- squeezenet_v1.0
- lenet
- mobilenet
dtype_list:
- asymmetric_quantized-u8
大概的思路:
import yaml
import os
yaml_path = os.path.join('test.aml')
f = open(yaml_path, 'r', encoding="utf-8")
cfg = f.read()
content = yaml.load(cfg, Loader=yaml.FullLoader)
task_list = []
for key in content:
if key == "caffe_models":
for value in content[key]:
task = (key, value)
task_list.append(task)
print('#'*100)
print(task_list)
pytest+yaml框架-5.调用内置方法和自定义函数(代码片段)
...f0c;我需要每次生成不一样的,那么我们可以调用自己定义的函数pip安装插件pipinstallpytest-yaml-yoyoyaml中调用内置方法pytest-yaml-yoyo插件使用了强大的jinja2模板引擎,所以我们在yaml文件中可以写很多python内置的语法了 查看详情
yaml.load与yaml.dump的用法(代码片段)
yaml文件的读取与保存 #读取yaml文件withopen(‘C:\Users\51102\Desktop\123\info.yaml‘)asf:temp=yaml.load(f.read(),Loader=yaml.FullLoader)labels=temp[‘label_names‘]dellabels[0]#删除列表第一个元素print(labels)#建立一个yaml文件withopen(‘C:\Users\51102\Desktop\123\i... 查看详情
springboot2系列教程|yaml配置文件详解(代码片段)
自定义属性加载首先构建SpringBoot项目,不会的看这篇旧文使用IDEA构建SpringBoot工程。首先在项目根目录src>>resource>>?application.properties文件下加入以下自定义属性:#防止读取乱码spring.http.encoding.charset=UTF-8#项目启动端口serv... 查看详情
springbootyaml自定义配置映射到javapojo(代码片段)
只需要一个注解就ok: @ConfigurationProperties("user.other")“user.other”这个值匹配的是user下的other对象 yaml:yaml的语法: https://yaml.org/spec/1.2/spec.html#directive//user: 查看详情
python+appium+yaml安卓ui自动化测试分享(代码片段)
...文件,如读取配置文件、启动appium服务、读取Yaml文件、定义日志格式等page存放最小测试用例集,一个模块一个文件夹results存放测试报告及失败截图testcase存放测试用例runtest.py运行所有测试用例运行的结果:三、yaml格式 查看详情
读取自定义datagrid的每个单元格数据-wpfc#(代码片段)
我已经定义了一个自定义数据网格,其列由文本框,组合框和按钮组成。我还使用XAMLBinding在每个组合框中填充数据。现在,我想从数据网格中读取每个选定的组合框值和文本框值。但是我找不到任何方法来阅读它。我研究过论... 查看详情
kubernetes❀yaml文件配置模板(代码片段)
YAML文件配置模板apiVersion:v1#必选,版本号,例如v1kind:Pod#必选,Podmetadata:#必选,元数据name:string#必选,Pod名称namespace:string#必选,Pod所属的命名空间labels:#自定义标签-name:string#自定义标签名字annotatio 查看详情
kuberneteskubeadminit与join原理分析(代码片段)
...it 此外,我们也可以自己编写yaml文件来自定义kubeadm的启动过程和一些组件的启动参数等等$kubeadminit--configxxx.yaml 2、k8snode节点部署(将一个node节点加入到已有集群当中)$kubeadmjoin<kube-apiserver的ip... 查看详情
双亲委派策略与自定义类加载器(代码片段)
类加载器类加载器(classloader)用来加载Java类到Java虚拟机中。一般来说,Java虚拟机使用Java类的方式如下:Java源程序(.java文件)在经过Java编译器编译之后就被转换成Java字节代码(.class文件)。类加载器负责读取Java字节代码,... 查看详情
javascript自定义一个全类型读取的函数(代码片段)
...法可以读取类型,但是不很全面,今天来分享下如何自己定义一个函数,将所有传入参数的类型给打印出来,比较简单,那这边也是老样子基本每行代码都有注释,那么直接上代码把://自定义全类型读取functionfunc(type)//如果是普... 查看详情
docker&kubernetes❀kubernetes集群yaml语法与不同等级属性资源配置清单参数查询方法(代码片段)
...须小写namespace:string#必选,Pod所属的命名空间labels:#自定义标签-name:string#自定义标签名字annotations:#自定义注释列表-name:stringspec:#必选,Pod中容器的详细定义containers:#必选,Pod中容器列表-name:string#必选,容器名称ima... 查看详情
kustomize模版自由的配置&&自定义kubernetes工具(代码片段)
kustomize是一个可以方便我们基于模版配置,自定义kubernetes的工具,类似kompose,但是个人觉得kompose更灵活点,而且使用上更方便安装macbrewinstallkustomize基本使用创建kustomization.yaml文件(类似docker-compose)touchkustomization.yaml内容如下... 查看详情
自定义dependencyproperty与routedevent(代码片段)
原文:自定义DependencyProperty与RoutedEvent//自定义依赖属性classMyBook:DependencyObject//依赖属性必须派生自DependencyObjectpublicstaticreadonlyDependencyPropertyBookNameProperty=DependencyProperty.Register("BookName",typeo 查看详情
yaml配置注入(代码片段)
...erson类:2.yaml文件内容:3.出现提示:4.测试加载指定配置文件读取其他文件(yaml)1.新建配置文件2.加载配置文件(student类)读取其他文件(properties)1.新建配置文件2.加载配置文件(student类)读取其他文 查看详情
php自定义模块与表单(代码片段)
[springboot]配置文件①(配置文件格式yaml配置及读取)(代码片段)
...则yaml配置文件数据读取使用@Value注解Environment对象自定义对象配置文件格式我们现在启动服务器默认的端口号是8080,访问路径可以书写为http://localhost:8080/books/1在线上环境我们还是希望将端口号改为80,这样在访问的... 查看详情
1.ansible-playbook变量定义与引用(代码片段)
简单的playbookplaybook是ansible的核心组件,使用的是YAML语法.下面请看简单的playbook代码[[email protected]playb]#catnginx.yaml-hosts:alltasks:-name:InstallNginxPackageapt:name=nginxstate=present-name:CopyNginx.conftemplate 查看详情
springbootlogging(代码片段)
...上一节Springboot配置文件读取和yaml结构springboot启动日志自定义logging1.配置文件中设置日志参数springboot对logback中的扩展支持控制台日志颜色输出下一节Springbootcrud和swagger使用源码源码链接https://gitee.com/mayun_xiaodu/ 查看详情