简单的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实现的一个简单算法(计算概率)   更改应用程序背景动画的java首选项   java捕获图像并通过socket发送   基于双精度数组的对象的java排序Arraylist?   java似乎无法获得前面数字的正确总和   java卡住了Tomcat线程。日食乐观锁定   java是一个异步的Throwable类的printStackTrace()   java随机错误(可能是)Android支持库   java我应该在代码中自动创建DB表,还是在安装过程中使用preinit?   在被调用的方法/函数Java/Android中处理异常?   arraylist Java发送电子邮件非法分号?   while循环中的Java数组   java Arquillian和TransactionAttribute类型。需要新的   java“未找到合适的驱动程序”获取此错误   java高性能地将子类转换为真正的超类   java如何从另一个活动访问变量   安卓 Java Kotlin泛型将类getter作为参数传递到函数中   尝试访问数组的某个位置时需要java“]”