在 Python 中解析 YAML 文件

Rayven Esplanada 2023年10月10日
在 Python 中解析 YAML 文件

本教程将演示在 Python 中解析 YAML 文件的不同方法。

YAML 是一种数据序列化标准,用作文件类型以在项目中存储配置文件或属性文件。YAML 通常替换典型的 XML 或 JSON 配置文件,因为与这两种文件类型相比,文件更易于序列化。

在 Python 中使用 PyYAML 包解析 YAML

pyyaml 是一个 Python 软件包,提供了实用程序来解析和处理 Python 中的 YAML 文件。

第一步是使用 pip 安装 pyyaml,因为它不是现成的 Python 包。

pip install pyyaml 

对于 Python 3.x 用户,请使用 pip3 而不是 pip

pip3 install pyyaml

现在安装完成,继续解析示例 YAML 文件。YAML 文件的开头始终始终带有三个破折号 ---,以表示新的 YAML 文档的开头。

请注意,缩进 YAML 文件时应仅使用空格,因为这些文件不会将制表符空格识别为缩进。

YAML 文件的扩展名可以是 .yaml.yml

  • sample.yaml
---
	name: "John"
	age: 23
	isMale: true
	hobbies:
		- swimming
		- fishing
		- diving

要在 Python 中读取给定的 YAML 文件,请首先导入 yaml 模块。然后,使用 open() 函数打开 yaml 文件。yaml 模块具有预定义的函数 load(),该函数接受文件作为参数,在 Python 中加载 YAML 文件,并将其转换为 Python 对象数据类型。

import yaml

with open("sample.yaml", "r") as f:
    print(yaml.load(f))

如果你打印 yaml.load() 的输出,它将以 Python 对象格式显示 YAML 文件的内容。

输出:

{'name': 'John', 'age': 23, 'isMale': True, 'hobbies': ['swimming', 'fishing', 'diving']}

为了确保 YAML 文件存在并且没有损坏,可以安全使用,我们可以使用 yaml 模块 YAMLError 中的内置错误对象添加 try 块并捕获异常。使代码更安全使用的另一层是用 safe_load() 替换 load() 函数,该函数在加载之前先验证 YAML 文件。

import yaml

with open("sample.yaml", "r") as stream:
    try:
        print(yaml.safe_load(stream))
    except yaml.YAMLError as exc:
        print(exc)

此解决方案与以前的解决方案具有相同的输出,尽管这是在 Python 中解析 YAML 文件的更安全的方法。

总而言之,使用 yaml 模块可以很容易地在 Python 中解析 YAML 文件。使用模块之前,请确保先执行 pip install pyyaml,因为它不是现成的内置模块。

try...except 块封装文件操作函数是一个很好的做法,以确保文件操作的顺利进行和安全执行。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn