简单的yaml配置文件解析器,易于访问结构化数据

envyaml的Python项目详细描述


环境Build StatusCoverage StatusVersionsLicense

简单的yaml配置文件解析器,易于访问结构化数据

为什么

现代配置文件变得越来越复杂、灵活、可读性更强。 yaml文件格式非常适合存储配置,但没有传递环境变量的选项。它们提供灵活性、可读性,并提供存储复杂数据结构的选项。 该项目旨在简化yaml文件和环境变量作为程序配置文件的使用,并且易于配置密钥访问。

安装

pip install envyaml

基本用法

假设我们有一个带有这个配置文件的项目env.yaml

# env.yamlproject:name:"${PROJECT_NAME}-${PROJECT_ID}"database:host:$DATABASE_HOSTport:3301username:usernamepassword:$DATABASE_PASSWORDdatabase:testtable:user:table_userblog:table_blogredis:host:$REDIS_HOSTport:5040config:expire:300prefix:$REDIS_PREFIXempty_env:$NOT_EXIST_ENV_VARIABLE

环境变量设置为

PROJECT_NAME=simple-hello
PROJECT_ID=42
DATABASE_HOST=xxx.xxx.xxx.xxx
DATABASE_PASSWORD=super-secret-password
REDIS_PREFIX=state

使用EnvYAML

分析文件
fromenvyamlimportEnvYAML# read file env.yaml and parse configenv=EnvYAML('env.yaml')# access project nameprint(env['project.name'])# >> simple-hello-42# access whole database sectionprint(env['database'])# {# 'database': 'test',# 'host': 'xxx.xxx.xxx.xxx',# 'password': 'super-secret-password',# 'port': 3301,# 'table':#   {#       'blog': 'table_blog', #       'user': 'table_user'#   },# 'username': 'username'# }# access database host value as key itemprint(env['database.host'])# >> xxx.xxx.xxx.xxx# access database user table value as key itemprint(env['database.table.user'])# >> table_user# access list items by numberprint(env['list_test'][0])# >> one# access list items by number as key print(env['list_test.1'])# >> two

使用get函数和默认值访问配置

print(env.get('not.exist.value','default'))# >> defaultprint(env.get('empty_env','default'))# >> defaultprint(env['empty_env'])# >> None

许可证

麻省理工学院许可。有关详细信息,请参见LICENSE文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java OnResizeListener或OnDrawListener或类似的东西   java Orika映射嵌套子列表   保存时java Heroku请求超时代码H12   数据库在Java中出现socket读取超时异常的原因是什么?   java如何更改来自Sqlite数据库的特定数据在Listview中的行颜色   java JAXB解组器无法正确处理XML中的列表   java Android日期时区让我抓狂   java不透明属性在Swing中如何工作?   eclipse从JavaEE代码生成流程图   java如何在Hibernate中从相关表中获取计数   java Glassfish部署了项目的依赖项库   java使内容适合JavaFx中的WebView   java不满意的链接错误libcrypto。所以1.0.0   循环中java数组的使用   java找出哪个包调用服务