0

0

python如何读取yaml配置文件_python解析和读取yaml配置文件的教程

下次还敢

下次还敢

发布时间:2025-09-15 13:14:01

|

884人浏览过

|

来源于php中文网

原创

YAML配置文件的优势在于可读性强、结构清晰、语法简洁,适合复杂配置场景。它能直观表示嵌套数据和列表,如多数据库连接信息;相比INI或JSON,编写更高效。通过PyYAML库可轻松读取为字典或列表,便于Python操作。

python如何读取yaml配置文件_python解析和读取yaml配置文件的教程

Python读取YAML配置文件,核心在于使用

PyYAML
库,将YAML文件内容转换为Python可操作的数据结构,比如字典或列表。

import yaml

def read_yaml_config(file_path):
    try:
        with open(file_path, 'r') as f:
            config = yaml.safe_load(f)
        return config
    except FileNotFoundError:
        print(f"错误:配置文件 {file_path} 未找到")
        return None
    except yaml.YAMLError as e:
        print(f"错误:解析 YAML 文件时发生错误:{e}")
        return None

# 示例用法
config_data = read_yaml_config('config.yaml')
if config_data:
    print(config_data)

YAML文件读取后,就可以像操作普通字典或列表一样使用其中的数据了。

YAML配置文件的优势是什么?

YAML相比于传统的INI或JSON,可读性更强,结构更清晰,更适合用于复杂的配置场景。例如,可以方便地表示嵌套的配置项,或者包含列表的配置。而且,YAML的语法也相对简洁,减少了不必要的字符,提升了编写效率。想象一下,你要配置一个包含多个数据库连接信息,每个连接信息又包含host、port、username、password等字段的场景,用YAML来描述就会非常直观。

立即学习Python免费学习笔记(深入)”;

如何处理YAML文件中的环境变量

晓语台
晓语台

晓语台,是一款AI文本创作产品。创作能力主要围绕营销文本的AI创作,晓语台覆盖了品牌与市调、商业媒体、社交媒体、搜索营销、数字广告、职场办公共六类全营销文本

下载

有时候,我们希望在YAML配置文件中使用环境变量,比如数据库密码,避免硬编码

PyYAML
本身不直接支持环境变量的解析,但我们可以通过一些技巧来实现。一种方法是在读取YAML文件后,手动替换其中的环境变量。

import os
import yaml

def resolve_env_variables(config):
    if isinstance(config, dict):
        for key, value in config.items():
            if isinstance(value, str) and value.startswith("${") and value.endswith("}"):
                env_var = value[2:-1]
                config[key] = os.environ.get(env_var, value) # 如果环境变量不存在,则使用原始值
            elif isinstance(value, (dict, list)):
                resolve_env_variables(value)
    elif isinstance(config, list):
        for item in config:
            if isinstance(item, str) and item.startswith("${") and item.endswith("}"):
                env_var = item[2:-1]
                item = os.environ.get(env_var, item)
            elif isinstance(item, (dict, list)):
                resolve_env_variables(item)
    return config

def read_yaml_config_with_env(file_path):
    config = read_yaml_config(file_path)
    if config:
        config = resolve_env_variables(config)
    return config

# 示例
config_data = read_yaml_config_with_env('config.yaml')
if config_data:
    print(config_data)

这个方法会递归地遍历整个配置,如果发现字符串以

${
开头,以
}
结尾,就尝试从环境变量中获取对应的值。

读取YAML时遇到

yaml.constructor.ConstructorError
怎么办?

这个错误通常发生在YAML文件中包含Python对象,而

PyYAML
默认情况下不会加载这些对象,为了安全考虑。如果你确定YAML文件是可信的,并且需要加载其中的Python对象,可以使用
yaml.unsafe_load
代替
yaml.safe_load
。但是,请注意,这可能会带来安全风险,因为它可以执行YAML文件中包含的任意Python代码。

import yaml

def read_yaml_config_unsafe(file_path):
    try:
        with open(file_path, 'r') as f:
            config = yaml.unsafe_load(f)
        return config
    except FileNotFoundError:
        print(f"错误:配置文件 {file_path} 未找到")
        return None
    except yaml.YAMLError as e:
        print(f"错误:解析 YAML 文件时发生错误:{e}")
        return None

更安全的方法是避免在YAML文件中存储Python对象,而是使用基本的数据类型,比如字符串、数字、布尔值等。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

706

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

624

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

734

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

616

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1234

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

573

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

694

2023.08.11

苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

10

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Django 教程
Django 教程

共28课时 | 2.4万人学习

SciPy 教程
SciPy 教程

共10课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号