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


envyaml的Python项目详细描述

环境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文件。

推荐PyPI第三方库


热门话题
trm eventcalendar 分词 pyfortune kyotycoon bba logg narcissus updown silverpop 工头 yahtzee circle direnv archipel mach opi libra labjackpython 玫瑰花 needs xml snip genapi bsc stompest hazard rubicon seis openms shared syslog santhoshse7en pandana comk thats aircv specclient sfv 流媒体 pynbody part3 someapp slicklog webdev adx nrpe rescape rst2pdf walkscore