跳转到主要内容

通用配置文件解析器

项目描述

configuration_settings模块

通用配置文件解析器。

安装

使用pip安装

pip install configuration-settings

用法

加载一组配置文件

from configuration_settings import Config

config = Config.load(__file__)

您可以可选地传递一个特定配置文件的路径(通常作为命令行参数),以及一个包含默认值的字典。

def load(cls, script_path: str, config_path: str = None, default: Mapping[str, Any] = None) -> Config:

配置文件可以是JSON或YAML,并且可以包含任意结构。配置文件中的字典被转换为Config对象。名称(键)不区分大小写。

配置文件将从以下位置加载

  • 如果没有提供配置路径

    • 从脚本所在位置的所有父目录
    • 脚本所在的目录
    • /etc/{脚本名称}
    • 当前目录
  • 如果提供了配置路径

    • 从脚本所在位置的所有父目录
    • 脚本所在的目录
    • 提供的配置路径

对于每个位置,如果位置是一个文件,则加载该文件,然后在文件的目录中搜索名为:'conf.d'、'config.d'、'{脚本名称}.d'、'{文件名称}.d' 的目录,按字母顺序加载这些目录中的所有文件。如果位置是一个目录,则搜索名为:'config'、'config.local'、'{脚本名称}'、'{脚本名称}.local' 的文件,然后搜索名为:'conf.d'、'config.d'、'{脚本名称}.d'、'{文件名称}.d' 的子目录。

后来加载的文件将覆盖早期文件中找到的值。字典值将被合并,因此只有提供的键将被替换。

配置文件可以有以下扩展名:'.json'、'.yml'、'.yaml'。

通常的做法是在与主脚本相同的目录下安装一个包含默认值的配置文件,然后用户可以在 /etc/{脚本名称}/config.yaml 和 /etc/{脚本名称}/config.d/*.yaml 中覆盖设置。

配置对象类似于字典,并允许以属性的形式访问值。

此外,还有获取特定类型值的方法

def get_int(self, name: str, default: int = None) -> (int | None):
    """
    Get an item as an int.

    Returns default if missing or not an int.
    """

def get_float(self, name: str, default: float = None) -> (float | None):
    """
    Get an item as a float.

    Returns default if missing or not a float.
    """

def get_bool(self, name: str, default: bool = None) -> (bool | None):
    """
    Get an item as a bool.

    Returns default if missing or not a bool.
    """

def get_path(self, name: str, default: str = None) -> (str | None):
    """
    Get an item as an absolute path.

    Relative paths are resolved to the config file the item was loaded from.
    Returns default if missing.
    """
def get_duration(self, name: str, default: timedelta = None) -> (timedelta | None):
    """
    Get an item as a timedelta.

    Accepts int values (seconds),
    or string values with s|m|h|d|w suffix for seconds, minutes, hours, days, or weeks.
    """

您可以通过以下方式为任何项目设置默认值

def set_default(self, name: str, value: Any) -> None:

您可以通过 config_file_paths 属性检索配置文件的完整路径集,或通过以下方式获取加载特定值所使用的文件

def get_config_file_path(self, name: str) -> (str | None):

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

configuration-settings-1.0.0.tar.gz (19.9 kB 查看哈希值)

上传时间

构建分布

configuration_settings-1.0.0-py3-none-any.whl (19.3 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面