📅  最后修改于: 2023-12-03 15:36:15.349000             🧑  作者: Mango
YAML(全称 YAML Ain't Markup Language)是一种轻量级的数据序列化格式,被广泛用于配置文件、数据交换等场景。在 Python 中,我们可以使用 PyYAML 模块轻松地把 YAML 文件加载到程序中。
本文将介绍如何使用 PyYAML 加载 YAML 配置文件,并且展示一些实际使用场景。
在使用 PyYAML 之前,需要先安装该模块。可以通过 pip 安装:
pip install pyyaml
我们假设有如下的 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 应用中,通常需要通过配置文件来配置应用的各种参数。我们可以把配置项保存在 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.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 配置文件。