Python
- 基础
-
库
- 其他
- argparse命令行参数解析
- asyncio自带异步编程库
- aiofiles异步文件读写库
- beautifulsoup4_HTML_XML解析库
- colorama_在终端输出漂亮的字
- datasets数据集处理
- html2text
- httpx_HTTP请求库
- litellm
- loguru日志库
- numpy科学计算基础库
- pillow图像处理
- pydantic数据验证
- pyyaml
- requests_HTTP请求库
- tenacity重试
- tiktoken计算Token量
- torch机器学习_深度学习框架
- tomli TOML文件解析库
- tomllib 自带TOML文件解析库
- unidiff_文本_文件差异对比
- uvicorn_Web服务器
- langchain
**PyYAML** 是 Python 的一个第三方库,用于解析和生成 **YAML 格式** 的文件或数据。
---
### 一、YAML 是什么?
- **YAML(YAML Ain't Markup Language)** 是一种人类可读的数据序列化格式,常用于配置文件、数据交换等。
- 它比 JSON 更易读,支持注释、多行字符串等特性,广泛用于:
- 项目的配置文件(如 `config.yaml`)
- DevOps / CI/CD 工具(如 Kubernetes、Ansible)
- 机器学习项目中的参数配置
- 各种需要结构化数据又希望易读易写的场景
---
### 二、PyYAML 是什么?
- **PyYAML 是 Python 处理 YAML 的标准库之一**(虽然不是 Python 内置,但非常流行)。
- 它让你可以在 Python 中:
- **加载(parse)YAML 文件/字符串 → 转为 Python 对象(如字典、列表)**
- **将 Python 对象(如字典、列表)→ 导出为 YAML 格式(保存为文件或字符串)**
---
### 三、PyYAML 常见用途
1. **读取 YAML 配置文件**
2. **将程序配置保存为 YAML 格式**
3. **与 JSON 类似,但更可读,用于数据交换**
4. **在机器学习/深度学习项目中管理超参数(如 `params.yaml`)**
5. **与 Docker Compose、Kubernetes、Ansible 等工具配合使用**
---
### 四、安装方法
使用 pip 安装:
```bash
pip install pyyaml
```
---
### 五、简单示例
#### 1. 读取 YAML 文件/字符串
```python
import yaml
# 示例 YAML 字符串
yaml_str = """
name: 张三
age: 25
skills:
- Python
- 机器学习
"""
# 解析 YAML -> Python 字典
data = yaml.safe_load(yaml_str)
print(data)
```
**输出:**
```python
{'name': '张三', 'age': 25, 'skills': ['Python', '机器学习']}
```
#### 2. 写入 YAML 文件
```python
import yaml
data = {
'name': '李四',
'age': 30,
'skills': ['Java', '深度学习']
}
# 保存为 YAML 文件
with open('person.yaml', 'w', encoding='utf-8') as f:
yaml.dump(data, f, allow_unicode=True, default_flow_style=False)
```
生成的 `person.yaml` 文件内容类似:
```yaml
age: 30
name: 李四
skills:
- Java
- 深度学习
```
---
### 六、注意安全:推荐使用 `yaml.safe_load`
- 不要使用 `yaml.load()` 加载不受信任的 YAML 文件,可能有安全风险(比如代码执行)。
- 推荐始终使用:**`yaml.safe_load()`** 来安全地解析 YAML。
---
### 七、总结(中文)
**PyYAML 是 Python 中用于处理 YAML 格式数据的库,支持将 YAML 文件或字符串与 Python 的字典、列表等数据结构互相转换。** 它常用于读取配置文件、保存结构化参数、与 DevOps 工具交互等场景,是 Python 开发中非常实用的工具之一。