
1.安装
2.yaml文件的格式
a)键值对形式
b)序列list
c)纯量str
d)强仿笑制转换,使用!!
e)多个文件:一个yaml文件里存在多个文件,用---表示,只能一起读取,不能分开读取
3.yaml文件的读取xx.yaml
4.yaml文件的写入
5.yaml文件的持续写入
6.Template修改yaml中的变量
source.yaml
Read_yaml.py
※ 问题:1.含有多个文件的yaml文件,读取出来如何选择?
2.持续写入能否将新写入的文件变誉毁成新的文件结构? ※
PS:觉庆大备得这篇文章有用的朋友,多多点赞打赏哦~!
YAML是一种简洁的非标记语言。其以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁。
基本规则:
1)大小写敏感
2)使用缩进表示层级关系
3)缩进时不允许使用Tab键,只并困神允许使用空格。
4)缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
5)使用#表示注释
6)字符串可以不用引号标注
1)对象:键值对的集合(简称 "映射或字典")
2)键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔
3)数组:一组按序排列的值(简称 "序列或列表")
4)数组前加有 “-” 符号,符号与值之间需用空格分隔
5)纯量(scalars):单个的、不可再分的值(如:字符串、bool值、整数、浮点数、时间、日期、null等)
6)None值可用null可 ~ 表示
安装pip命令: pip install PyYaml
(1)示例:
Yaml文件内容如下:
结果: 数据读出来了,但是有报错:
(2)禁止警告
上面这个地方是禁止使用yaml.load(),因为python认为load是不安全的,发出了安全绝亏警告,那么我们如何取消警告呢?
yaml.load(result, Loader=yaml.FullLoader)
结果:
(3)读取yaml具体字段结果
结果:
1)键值对形式
2)序列list
3)数字
4)布尔值
5)None用~表示
6)时间采用 ISO8601 格式
7)日期采尺册用复合 iso8601 格式的年、月、日表示
8)强制转换,使用!!
9)多个文件:一个yaml文件里存在多个文件,用---表示,只能一起读取,不能分开读取
输出结果:
10)锚点&和引用*
&用来建立锚点,<<表示合并到当前数据,*用来引用锚点
结果:
(1)覆盖写入:
结果:
(2)持续写入:
结果:
(3)多段写入:yaml.dump_all()将多个段输出到一个文件中
结果:
最常见的两种
接下来要讲的几种case要用到如下的yml文件
application.yml
application1.yml
借助Spring提供的一个类,org.springframework.core.env.Environment, 它继承了PropertyResolver, 所以可以当作属性解析器使用
Spring提供了YamlPropertiesFactoryBean可以读取自定义配置yml文件,不再拘泥于application.yml及其激活的其他配置文件
存在问题: 那就是只有在这个接口的请求中能够取到这个属性的值,如果再写一个接口,不使用YamlPropertiesFactoryBean读取配置文件,即使之前的方法已经读取过这个yml文件一次了,第二个接口取到的仍然还是空值。
解决方式: 配合PropertySourcesPlaceholderConfigurer使用,它实现了BeanFactoryPostProcessor接口,也就是一个bean工厂后置处理器的实现,可以将配置文数洞件的属性值加载到一旦毕颂个Properties文件中。模郑使用方法如下:
除了使用YamlPropertiesFactoryBean将yml解析成Properties外,其实我们还可以使用YamlMapFactoryBean解析yml成为Map
使用snakeYml,需要引入依赖
使用方式:
使用jackson,需要引入依赖
使用jackson读取yml也非常简单,这里用到了常用的ObjectMapper,在创建ObjectMapper对象时指定使用YAML工厂,之后就可以简单的将yml映射到实体:
jackson还可以生成yml文件
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)