yaml文件调用Python方法(python yamlload)

http://www.itjxue.com  2023-04-09 14:37  来源:未知  点击次数: 

python操作yaml文件

????????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()将多个段输出到一个文件中

????结果:

Python 自动化处理 Yaml 文件-

Yaml文件内容—示例1:

Yaml文件内容—示例2:

从上述示例文件内容可以看到 Yaml 数据结构:

1). 对象:键值对的集合(简称 "映射或字典")

例如:family 和 address 这两个对象后面分别有对应的键值对集合。

2). 键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔

例如:

family 对象中的 key 为 name 与其对应的 value 值 Smile_Family 之间是使用空格分隔的。

address 对象中的 key 为 province 与其对应的 value 值 BeiJing 之间是使用空格分隔的。

3). 数组:一组按序排列的值(简称 "序列或列表"),数组前加有 “-” 符号,符号与值之间需用空格分隔

例如:

parents 中的 John 和 Jane

children 中的 Lily 和 Frank

4). 纯量(scalars):单个的、不可再分的值。例如:字符串、bool值、整数、浮点数、时间、日期、null等

None值可用null也可用 ~ 表示;

yaml文件内容如下:

Python解析输出为:

这个例子输出一个字典,其中value包括所有基本类型

Yaml文件内容如下:

Python解析输出为:

Yaml文件内容如下:

Python输出为:

如果字符串没有空格或特殊字符,不需要加引号,但如果其中有空格或特殊字符,则需要加引号。

这里要注意单引号和双引号的区别:

单引号中的特殊字符转到 Python 会被转义,也就是到最后是原样输出;

双引号不会被 Python 转义,到最后是输出了特殊字符;

Yaml文件内容如下:

Python输出:

python读取yaml文件yaml.composer.ComposerError: expected a single document in the stream

报错

原因:yaml文档中用---分割,有多个文档,而读取的时候用了yaml.load()方法

【解决方案一】

将yaml.load()方法改成yaml.loadall()

注意:输出最后生成的datas和data的类型是:

generator object load_all at 0x0000017829B079C8

class 'generator'

【解决方案二】

将文档中的---去掉,变成document1

最后输出的:datas是字典 dict

第二个问题:

报错

【解决方案一】

将yaml.load()方法改成yaml.loadall()

【解决方案二】

load后面加上参数Loader=yaml.FullLoader

datas = yaml.load(file_data, Loader=yaml.FullLoader)

yaml文件使用

YAML 入门教程

参考:

python读取yaml文件

Python常用配置文件ini、json、yaml读写总结

读取yaml文件(数组用下标[x],字典用[key])

编写一个py文件,读取yaml文件,yaml文件需要通过safe_load方法转换成字典格式,然后再通过字典取值的方式获得值。

在目录下创建test3.yaml文件

在目录下创建test3_fz.yaml文件

python读取实现:

参考:

python txt文件常用读写操作

利用Python从文件中读取字符串(解决乱码问题) Python - chardet自动检测字符编码

python——Yaml

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:觉得这篇文章有用的朋友,多多点赞打赏哦~!

Python基础10--yaml文件的写法与使用

yaml 是专门用来写配置文件的语言

yaml文件其实也是一种配置文件类型,后缀名是.yaml或.yml都可以

个人认为比yaml比json格式更方便

cmd执行pip install pyyaml

装的时候要用pyyaml,实际使用时直接import yaml即可

短横线加一个空格(- )

当一个yaml文件内有多组数据时,用三个-分隔,

读取时使用yaml.load_all

例如同时有列表和字典:

(责任编辑:IT教学网)

更多