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

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

报错

原因: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是一种简洁的非标记语言。其以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁。

  基本规则:

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

    结果:

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12200266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存