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

项目详细描述

环境Build StatusCoverage StatusVersionsLicense

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

为什么

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

安装

pip install envyaml

基本用法

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

# env.yaml
project:
  name: "${PROJECT_NAME}-${PROJECT_ID}"

database:
    host: $DATABASE_HOST
    port: 3301
    username: username
    password: $DATABASE_PASSWORD
    database: test

    table:
      user: table_user
      blog: table_blog

redis:
    host: $REDIS_HOST
    port: 5040

    config:
      expire: 300
      prefix: $REDIS_PREFIX

empty_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

分析文件
from envyaml import EnvYAML

# read file env.yaml and parse config
env = EnvYAML('env.yaml')

# access project name
print(env['project.name'])

# >> simple-hello-42

# access whole database section
print(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 item
print(env['database.host'])

# >> xxx.xxx.xxx.xxx

# access database user table value as key item
print(env['database.table.user'])

# >> table_user

# access list items by number
print(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'))
# >> default

print(env.get('empty_env', 'default'))
# >> default

print(env['empty_env'])
# >> None

许可证

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

最新Python第三方库