当前位置: 首页 > news >正文

数据序列化语言---YAML

文章目录

    • 1. YAML介绍
      • 主要区别总结
    • 2. 使用

YAML是一种数据序列化语言,用于以人类可读的形式存储信息。它最初代表“Yet Another MarkupLanguage”,但后来更改为“ YAML Ain’t Markup Language”(YAML不是⼀种标记语言),以区别于真正的标记语言。
它类似于XML和JSON文件,但使用更简洁的语法。

特点:

  • YAML 是⼀种非常简单的基于文本的人类可读的语言,用于在人和计算机之间交换数据。
  • YAML 是不是⼀种编程语言。它主要用于存储配置信息。
  • YAML 的缩进就像 Python 的缩进⼀样优雅。
  • YAML 还减少了 JSON 和 XML文件中的大部分“噪音”格式,例如引号、方括号和大括号。

注意:
• YAML 是区分大小写。
• YAML 不允许使用制表符 Tab 键,(你之所按下 Tab YAML 仍能使⽤,是因为编辑器被配置为按下
Tab 键会导致插入适当数量的空格)。
• YAML 是遵循严格缩进的。

1. YAML介绍

YAML 文件的后缀名是 .yaml .yml ,本着能少写不多写的原则,我们常⽤的是 .yml
yaml 中支持不同数据类型,但在写法上稍有区别

数据类型YAML 语法示例JSON 语法示例
简单标量值
key: value
{
“key”: “value”
}
整数和浮点数
int_key: 123
float_key: 123.456
{
“int_key”: 123,
“float_key”: 123.456
}
布尔值
bool_key: true
{
“bool_key”: true
}
字符串
string_key: “This is a string”
{
“string_key”: “This is a string”
}
列表
list_key:
- item1
- item2
- item3
{
“list_key”: [“item1”, “item2”, “item3”]
}
映射(字典)
map_key:
sub_key1: sub_value1
sub_key2: sub_value2
{
“map_key”: {
“sub_key1”: “sub_value1”,
“sub_key2”: “sub_value2”
}
}
嵌套结构
nested_key:
list_key:
- item1
- item2
map_key:
sub_key1: sub_value1
sub_key2: sub_value2
{
“nested_key”: {
“list_key”: [“item1”, “item2”],
“map_key”: {
“sub_key1”: “sub_value1”,
“sub_key2”: “sub_value2”
}
}
}

以上语法若短时间内无法掌握,我们也有很多工具可供使用,如json转yaml
https://www.jashtool.com/json/to-yaml

主要区别总结

  1. 语法简洁性:YAML 使用缩进和简洁的符号(如 - 表示列表项),而 JSON 使用大括号和方括号
  2. 注释支持:YAML 支持注释(以 # 开头),JSON 不支持注释
  3. 字符串引号:YAML 中字符串可以不加引号(除非包含特殊字符),JSON 中所有字符串必须加双引号
  4. 文件扩展名:YAML 文件通常使用 .yaml.yml,JSON 文件使用 .json

2. 使用

yaml 文件通常作为配置文件来使用,可以使用 yaml 库来读取和写入 YAML 文件

  1. 安装YAML库
pip install PyYAML==6.0.1
  1. 创建yaml文件
    在这里插入图片描述
  2. 读取 写入yaml
import yaml#追加写入
def write_yaml(filename, data):with open(filename, encoding="utf-8", mode="a+") as f:yaml.safe_dump(data, stream=f)#读取
def read_yaml(filename, key):with open(filename, encoding="utf-8", mode="r") as f:data = yaml.safe_load(f)return data[key]#清空
def clear_yaml(filename):with open(filename, encoding="utf-8", mode="w") as f:f.truncate()def test_tml():#写入yaml文件data = {"str": "12345"}write_yaml("test.yml", data)#读取yaml文件ret = read_yaml("test.yml", "str")print("ret:", ret)#清空yaml文件clear_yaml('test.yml')
http://www.dtcms.com/a/388699.html

相关文章:

  • Dify: Step2 Dify模型配置 Dify, Docker,ollama是什么关系
  • SSH连接排故排查
  • 【DMA】DMA架构解析
  • STM32HAL库-移植mbedtls开源库示例(一)
  • MAP的具体实现
  • 排序不等式的推广,对于任意两个数列的推广
  • 9.7.3 损失函数
  • Java Web开发的基石:深入理解Servlet与JSP​
  • pyOCD发布V0.39版本(2025-09-17)
  • kernel侧CPU是怎样判断共享的?
  • pcl案例六 基于配准的无序抓取
  • 动态库和静态库的链接加载
  • 离线安装docker镜像
  • MySql索引性能优化
  • 【实战指南】WAF日志分析系统的生产部署:性能调优与最佳实践
  • OKZOO联合非小号TKW3,海上ALPHA WEB3派对启航
  • Java工程代码架构度量:从DSM到构建工具的深度实践
  • 车联网网络安全
  • AI模型压缩-详解
  • 从入门到熟练掌握MySQL:聚焦增删改查操作
  • 小目标检测的尺寸极限
  • deepblog insCode 初体验[设计待更新]
  • MySQL--事务
  • PolarDB-for-PostgreSQL CDC 总结
  • web:ts的构造函数
  • 深入解析API测试:从工具使用到自动化实践
  • 某机场网络安全改造方案详细解析
  • 本地大模型编程实战(34)使用faiss实现语义检索
  • Linux:线程池
  • 告别依赖混乱:Spring IoC 容器与 DI 依赖注入入门精讲