YAML的使用

       工作中经常看到以.yml和.yaml结尾的文件,那么这些文件是什么呢,其实就是一些配置文件,跟平时使用的properties一样,都是项目相关配置文件。用习惯了就发现还是比较好用的,其语言还是比较简单的。

一、YAML的语法规则:

       1.大小写敏感;

        2.用缩进代表层级关系;

        3.缩进使用空格,不允许使用TAB

        4.缩进多少空格没有要求,只有同一层级左对齐就行;

        5.数据结构,key: value类型,谨记“:”之后必须要有一个空格,这是yaml自己的语法规则

        6.注释也跟properties文件一样,都是用"#"

二、数据结构

       1.对象

       2.数组

       3.常量

下面将详细说说相关数据结构:

1.对象:键值对的集合

例如对象的一组键值对属性:

2.数组:数组用"-"代表每一个值,且必须换行

3.常量

 

<think> 我们被要求提供关于Python中YAML使用方法的指南。根据引用,我们可以总结以下关键点: 1. 安装PyYAML库:这是Python中处理YAML的主要库。 2. 基本使用方法:包括读取和写入YAML文件。 3. 示例:展示如何解析YAML文件。 4. 高级功能:如加载多个文档、自定义标签等。 5. 安全注意事项:因为yaml.load可能存在安全风险,建议使用安全加载。 6. 替代库:除了PyYAML,还有其他库如ruamel.yaml等。 我们将按照以下结构组织回答: 一、安装PyYAML 二、基本使用方法 1. 读取YAML文件 2. 写入YAML文件 三、示例YAML文件解析 四、高级功能 1. 加载多个文档 2. 自定义标签 五、安全注意事项 六、替代库 同时,我们将根据引用中的示例代码进行说明。 注意:引用[3]中提到了使用`yaml.load`,但注意在PyYAML中,`yaml.load`默认是不安全的,因为它可以执行任意代码。所以我们将强调使用`safe_load`。 另外,引用[4]提到解析YAML输出是构建智能应用程序的重要步骤,我们也可以简要说明YAML在配置和数据处理中的常见用途。 最后,生成相关问题。 </think> ### Python中YAML使用指南 YAMLYAML Ain't Markup Language)是轻量级数据序列化格式,Python通过`PyYAML`库提供完整支持。以下是核心使用方法和最佳实践: --- #### 一、安装与环境准备 ```bash pip install pyyaml # 安装PyYAML库[^1] ``` --- #### 二、基础操作 ##### 1. 读取YAML文件 ```python import yaml with open("config.yaml", "r") as file: data = yaml.safe_load(file) # 安全加载[^2][^3] print(data["database"]["host"]) # 访问嵌套值 ``` ##### 2. 写入YAML文件 ```python config = { "app": {"name": "MyApp", "version": 1.0}, "debug": True } with open("output.yaml", "w") as file: yaml.dump(config, file, sort_keys=False) # 保持键顺序[^1] ``` --- #### 三、YAML文件语法示例 ```yaml # config.yaml database: host: "localhost" port: 5432 credentials: username: admin password: !secret "pass123" # 自定义标签[^3] features: [logging, auth, api] # 列表结构 # 多文档分隔符 --- --- debug: true ``` --- #### 四、高级功能 ##### 1. 多文档处理 ```python with open("multi_doc.yaml") as file: docs = list(yaml.safe_load_all(file)) # 加载多个文档[^1] print(docs[0]["debug"]) # 访问第一个文档 ``` ##### 2. 自定义标签解析 ```python def secret_constructor(loader, node): return "******" # 密码脱敏处理 yaml.add_constructor('!secret', secret_constructor) # 注册标签处理器[^3] ``` --- #### 五、安全注意事项 1. **避免`yaml.load()`** 使用`safe_load()`防止任意代码执行漏洞[^2][^4]: ```python # 危险方式(可能执行恶意代码) # data = yaml.load(file) # 安全方式 data = yaml.safe_load(file) ``` 2. **输入验证** 对加载的数据进行类型检查: ```python if not isinstance(data, dict): raise ValueError("Invalid YAML structure") ``` --- #### 六、替代方案 | 库名 | 特点 | 安装命令 | |----------------|----------------------------------|----------------------| | `ruamel.yaml` | 支持YAML 1.2,保留注释和顺序[^4] | `pip install ruamel.yaml` | | `PyYAML` | 轻量级基础库 | 内置安装 | --- #### 七、调试技巧 ```python # 打印原始YAML结构(调试用) print(yaml.dump(data, default_flow_style=False)) ``` > 输出示例: > ```yaml > app: > name: MyApp > version: 1.0 > ``` --- **典型应用场景**: - 配置文件管理(如Docker Compose) - API请求/响应数据序列化 - 机器学习管道配置[^4]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值