yaml配置文件

Yaml学习

yaml+python库安装

pip install pyyaml

import yaml
print(yaml.__version__)  # 打印安装的 PyYAML 版本

yaml介绍

YAML(YAML Ain't Markup Language)是一种注重可读性的数据序列化格式,非常适合用来表达或编辑数据结构、各种配置文件等。

参考链接

基本语法规则

  • ​大小写敏感​:YAML 对大小写敏感
  • ​使用缩进表示层级关系​:这是 YAML 最显著的特点之一。​缩进只允许使用空格,不能使用 Tab 键
  • 缩进的空格数不重要,只要相同层级的元素左侧对齐即可(一般可以统一成2个)
  • 注释​:使用 # 表示注释,可以出现在一行中的任何位置,# 后面的内容都会被解析器忽略
  • 文档标识符​:使用 --- 表示一个文档的开始,... 表示一个文档的结束。这在同一个文件中包含多个文档时特别有用

核心数据结构

YAML 主要支持三种数据结构:

  • ​标量 (Scalars)​​:单个的、不可再分的值,例如字符串、数字、布尔值
  • ​序列 (Sequence)​​:一组按次序排列的值,又称为数组或列表
  • 对象 (Mapping)​​:键值对的集合,又称为映射、哈希或字典

标量

字符串

建议不使用引号,以下情况除外。

  • 包含特殊字符:# % @ &* ' ` | > < {} [] : , = !

  • 字符串以空格开头或结尾(自动过滤掉空格)

  • yaml内置标量类型同名: true、fail、 null、 123(数字)

  • unicode控制字符: "\0" ...

  • 多行字符串:

    • |(字面块)​​:当你需要保留字符串内所有换行和缩进的原始格式时使用。
    • >(折叠块)​​:当你希望将多行字符串折叠成一行​(换行符被替换为空格),通常用于长段落文本时使用。

数字​:包括整数和浮点数,直接书写即可

布尔值​:使用 true 或 false 表示(大小写敏感,推荐全部小写)

日期和时间​:日期采用 yyyy-MM-dd 格式,时间采用 ISO 8601 格式(例如 2001-12-15T02:59:43.1Z)

序列

  1. 多行表示法: '-'+' '

    fruits:
      - Apple
      - Orange
      - Strawberry
    
  2. 单行表示法:

    fruits: [Apple, Orange, Strawberry]
    

对象

对象(或称为字典)是键值对的集合,使用冒号加空格 : 表示

  1. 多行表示法:

    person:
      name: John Doe
      age: 30
      married: true
    
  2. 单行表示法

    person: {name: John Doe, age: 30, married: true}
    

pyyaml库使用

核心功能:
- 将YAML 数据解析为 Python 对象
- 将Python对象序列化为 YAML 格式

import yaml

#print(yaml.__version__)  # 打印安装的 PyYAML 版本
#
#with open('test.yaml', 'r', encoding='utf-8') as f:    
#    data = yaml.safe_load(f)
#print(data)

data = {
    'name': '李四',
    'age': 30,
    'is_student': False
}

#yaml_str = yaml.dump(data, allow_unicode=True)  # allow_unicode 允许正确显示中文
#print(yaml_str)

with open('output.yaml', 'w', encoding='utf-8') as file:
    yaml.dump(data, file, default_flow_style=False, allow_unicode=True, sort_keys=False)
posted @ 2025-09-15 22:06  justifice  阅读(23)  评论(0)    收藏  举报