yaml的实际使用

import yaml


def write_yaml(data: dict, file: str):
    """
    写入yaml文件
    :param data: 需要写入的数据
    :param file: 需要写入的文件路径
    :return: Nome
    """
    file = open(file, 'a+', encoding='utf-8')
    yaml.dump(data, file, allow_unicode=True)
    file.close()


def read_yaml(file: str) -> dict:
    """
    读取yaml文件
    :param file:要读取的yaml文件路径 
    :return: 返回字典或者数组
    """
    with open(file, "r", encoding='utf-8') as file:
        parameter = yaml.load(file.read(), Loader=yaml.FullLoader)
    return parameter


if __name__ == "__main__":
    data_1 = [{'casename': 'casefailone', 'msg': '测试失败', 'user': 'name', 'user_password': 123456},
              {'casename': 'casesuccess', 'msg': '测试成功', 'user': 'shibai', 'user_password': 123456}]
    write_yaml(data_1, './data_1.yaml')
    data_2 = {'casename': 'casefailone', 'msg': '测试失败', 'user': 'name', 'user_password': 123456}
    write_yaml(data_2, './data_2.yaml')
    print(read_yaml('./data_1.yaml'))
    print(read_yaml('./data_2.yaml'))

### YAML 使用方法及示例 YAML 是一种用于编配置文件的语言,设计目标是为了让人类和机器都能轻松阅读和理解[^1]。以下是关于 YAML 的基本语法、数据类型以及复杂结构的详细介绍。 #### 基本语法 YAML 的语法非常简洁直观,主要特点如下: - **大小敏感**:键名和值都需要区分大小。 - **使用空格表示层级关系**:通过缩进来定义嵌套结构,注意不能使用 Tab 键,仅能使用空格[^3]。 - **注释**:`#` 后的内容会被视为注释。 - **编码**:默认采用 Unicode 编码(如 UTF-8),支持多种语言字符集。 #### 数据类型 YAML 支持多种基础数据类型,具体说明如下: ##### 1. 字符串 字符串可以省略引号,但如果包含特殊字符,则需要用单引号 `'` 或双引号 `"` 包裹[^4]。 ```yaml name: John Doe quote: 'This is a string with special characters like @ and $' ``` ##### 2. 数值 数值可以直接书,无需额外处理。 ```yaml age: 30 pi: 3.14159 ``` ##### 3. 布尔值 布尔值可以用 `true/false` 表示,也可以用其他形式替代(如 `yes/no`, `on/off`)。 ```yaml is_active: true enabled: yes disabled: off ``` ##### 4. 空值 空值可以通过关键字 `null` 或者留空实现。 ```yaml value: null empty_value: ``` ##### 5. 列表 (Array) 列表项之间不需要逗号分隔,每一项前加 `-` 符号并换行。 ```yaml fruits: - Apple - Banana - Orange ``` ##### 6. 对象/字典 (Map) 对象由键值对组成,键和值之间用冒号 `:` 分隔。 ```yaml person: name: Alice age: 25 city: New York ``` ##### 7. 日期时间类型 YAML 提供了内置的时间格式支持。 ```yaml event_date: 2023-10-01T12:00:00Z ``` #### 复杂数据结构 YAML 可以方便地描述复杂的嵌套结构,以下是一些常见场景的例子。 ##### 1. 嵌套结构 嵌套的对象或列表可以通过增加缩进的方式实现。 ```yaml company: name: TechCorp employees: - name: Bob position: Developer - name: Jane position: Designer ``` ##### 2. 列表包含字典 列表中的每个元素都可以是一个完整的字典。 ```yaml items: - id: 1 title: Item One - id: 2 title: Item Two ``` ##### 3. 字典包含列表 字典的某个字段可以存储一个列表。 ```yaml product: name: Laptop features: - High Performance - Lightweight Design ``` ##### 4. 复用锚点和引用 为了减少重复,YAML 提供了锚点 (`&`) 和引用 (`*`) 功能。 ```yaml base_config: &default_settings timeout: 30 retries: 5 service_a: <<: *default_settings url: http://service-a.com service_b: <<: *default_settings url: http://service-b.com ``` #### 特殊功能 - **字面量和折叠字符串**:对于多行文本,可以使用 `|` (保留换行)或 `>` (自动折行)。 ```yaml message: | This is a multi-line message. It preserves newlines. summary: > This long text will be folded into one line automatically. ``` - **多个 YAML 配置放在同一文件中**:可以在同一个文件中分割多个文档,每部分以三个破折号 `---` 开始。 ```yaml --- name: Config A version: 1.0 --- name: Config B version: 2.0 ``` #### 应用实例 在实际项目中,YAML 经常被用来管理 Spring Boot 的配置文件[^5]。例如: ```yaml spring: application: name: my_project profiles: active: dev server: port: 8080 logging: level: root: INFO ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值