Python 读取 YAML
什么是 YAML
YAML(Yet Another Markup Language)是一种可读性高且常用于配置文件的数据序列化格式。它以易读的方式表达数据结构,支持列表、字典等常见的数据类型。与其他数据序列化格式(如 JSON 和 XML)相比,在文本文件中更易于人类阅读和编辑。
YAML 具有以下特点:
- 简洁性:YAML使用缩进和换行的方式来组织数据,使得数据看起来更加清晰、紧凑,减少了冗长的标记符号。
- 可读性:YAML使用普通文本来表示数据,易于人类理解和编辑。
- 可扩展性:YAML支持自定义数据类型,可以按照需要定义新的数据结构。
Python 中的 YAML 库
在 Python 中,我们可以使用 PyYAML 库来读取和处理 YAML 格式的数据。PyYAML 能够将 YAML 文件加载为 Python 对象,也可以将 Python 对象转换为 YAML 格式。
要使用 PyYAML 库,可以通过 pip 安装:
pip install pyyaml
读取 YAML 文件
使用 PyYAML 库,我们可以将 YAML 文件内容读取为 Python 对象。下面是一个示例 YAML 文件 config.yml
:
# config.yml
database:
host: localhost
port: 3306
username: my_username
password: my_password
app:
name: My App
version: 1.0
现在我们来读取这个 YAML 文件并转换为 Python 对象:
import yaml
with open('config.yml', 'r') as file:
config = yaml.load(file, Loader=yaml.FullLoader)
print(config)
运行结果:
{'database': {'host': 'localhost', 'port': 3306, 'username': 'my_username', 'password': 'my_password'}, 'app': {'name': 'My App', 'version': 1.0}}
通过这段代码,我们成功地将 YAML 文件加载为了一个 Python 字典对象。文件中的每个键值对都被转换为对应的字典项。
访问 YAML 数据
一旦将 YAML 文件加载为 Python 对象,我们可以像访问普通字典一样访问其中的数据。下面是一些常见的访问方式:
# 访问数据库相关配置
database = config['database']
print(database['host']) # 输出:localhost
print(database['port']) # 输出:3306
# 访问应用程序相关配置
app = config['app']
print(app['name']) # 输出:My App
print(app['version']) # 输出:1.0
修改 YAML 数据
我们可以对加载的 YAML 数据进行修改,然后将修改后的数据保存回 YAML 文件。下面是一个示例演示如何修改配置文件:
# 修改数据库用户名和密码
config['database']['username'] = 'new_username'
config['database']['password'] = 'new_password'
# 保存修改后的数据
with open('config.yml', 'w') as file:
yaml.dump(config, file)
运行这段代码后,config.yml
文件中的用户名和密码已经被修改为新的值。
总结
本文介绍了如何使用 Python 中的 PyYAML 库读取和处理 YAML 格式的数据。通过 PyYAML,我们可以方便地将 YAML 文件加载为 Python 对象,对其中的数据进行访问和修改,并将修改后的数据保存回 YAML 文件。
参考资料
- PyYAML 官方文档:https://pyyaml.org/wiki/PyYAMLDocumentation