📜  从 yaml 文件加载招摇 (1)

📅  最后修改于: 2023-12-03 15:36:15.349000             🧑  作者: Mango

如何从 YAML 文件加载配置

YAML(全称 YAML Ain't Markup Language)是一种轻量级的数据序列化格式,被广泛用于配置文件、数据交换等场景。在 Python 中,我们可以使用 PyYAML 模块轻松地把 YAML 文件加载到程序中。

本文将介绍如何使用 PyYAML 加载 YAML 配置文件,并且展示一些实际使用场景。

安装 PyYAML 模块

在使用 PyYAML 之前,需要先安装该模块。可以通过 pip 安装:

pip install pyyaml
加载 YAML 文件

我们假设有如下的 YAML 配置文件 config.yaml

database:
  host: localhost
  port: 3306
  username: root
  password: root123

在 Python 中,可以使用 PyYAML 加载该配置文件:

import yaml

with open('config.yaml', 'r') as f:
    config = yaml.safe_load(f)

上述代码中,我们使用 yaml.safe_load() 函数来加载 YAML 文件,并且把加载结果保存在变量 config 中。在加载过程中,PyYAML 会把 YAML 文件转换成 Python 中的数据类型,比如字典、列表等。

访问配置项

一旦加载了 YAML 配置文件,我们就可以从其中访问配置项了。以刚才的 config.yaml 为例,我们可以这样访问其中的配置项:

print(config['database']['host'])     # 输出 localhost
print(config['database']['port'])     # 输出 3306
print(config['database']['username']) # 输出 root
print(config['database']['password']) # 输出 root123

上述代码中,我们使用 Python 字典的语法访问 YAML 文件中的配置项。

实际使用场景

下面我们来看一些 PyYAML 的实际使用场景。

Flask Web 应用的配置文件

在 Flask Web 应用中,通常需要通过配置文件来配置应用的各种参数。我们可以把配置项保存在 YAML 文件中,然后在应用启动时加载该文件。例如:

debug: true
db:
  host: localhost
  port: 3306
  username: root
  password: root123

在 Flask 中,可以这样加载配置文件:

from flask import Flask
import yaml

app = Flask(__name__)
with open('config.yaml', 'r') as f:
    config = yaml.safe_load(f)
app.config.update(config)

在应用中,可以使用 app.config 对象来访问配置项:

if app.config['DEBUG']:
    print('Debug mode is on')

DATABASE_HOST = app.config['db']['host']
DATABASE_PORT = app.config['db']['port']
PyTest 测试框架的配置文件

在 PyTest 测试框架中,可以使用一个 pytest.ini 文件来配置各种参数。例如:

[pytest]
addopts = -ra
markers =
    slow: marks tests as slow (deselect with '-m "not slow"')
    skip: marks tests as skipped
    xfail: marks tests as expected to fail
    retry: number of times to retry a failed test

在 PyTest 中,可以使用 pytest.config 对象来访问配置项:

if pytest.config.getoption('--repeat') > 1:
    print('Run tests repeatedly')

MARK_SLOW = pytest.config.getini('markers')['slow']
总结

使用 PyYAML 可以轻松地把 YAML 配置文件加载到 Python 程序中。通过访问 Python 的数据结构,我们可以方便地访问配置项,并在各种应用场景下使用 YAML 配置文件。