Skip to main content

解析配置文件并从中提取值

项目描述

confget - 解析配置文件

confget库解析配置文件(当前仅 INI 样式文件)并允许程序使用其中定义的值。它提供了用于选择要返回的变量名称和值以及从中获取它们的配置文件部分的各种选项。

confget库还可以用作具有与 C 实现相同接口的命令行工具。

confget库是完全类型化的。

为后端指定配置值

confget.defs模块定义了Config用于控制各种confget后端行为的类。它的主要目的是为 INI 样式文件指定文件名和可选的部分名称,但其他后端可能以不同的方式使用它的字段。

使用Config以下参数创建对象:

  • 要查询的变量名称列表(可能为空)
  • filename(str, optional): 要打开的文件名
  • section(str, default ""): 文件中部分的名称
  • section_specified(bool, default false): 如果section是空字符串,只从文件开头的未命名部分获取变量,而不是默认到文件中的第一部分

解析 INI 风格的配置文件

confget的“ini”后端解析 INI 样式的配置文件。它的read_file()方法解析文件并返回部分字典以及其中的变量及其值:

import confget

cfg = confget.Config([], filename='config.ini')
ini = confget.BACKENDS['ini'](cfg)
data = ini.read_file()
print('Section names: {names}'.format(names=sorted(data.keys())))
print(data['server']['address'])

让节中的变量覆盖默认变量

在某些情况下,在文件中的第一个命名部分之前有默认值是很有用的,然后覆盖各个部分中的一些值。这对于例如保存在与主机同名的部分中的特定于主机的配置可能很有用。

除了其他过滤模式之外,库中的format模块confget还允许获取变量列表,其中包含覆盖默认变量的部分:

from confget import backend, format

cfg = format.FormatConfig(['foo'], filename='config.ini', section='first',
                          section_override=True)
ini = backend.BACKENDS['ini'](cfg)
data = ini.read_file()
res = format.filter_vars(cfg, data)
assert len(res) == 1, repr(res)
print(res[0].output_full)

cfg = format.FormatConfig(['foo'], filename='config.ini', section='second',
                          section_override=True)
ini = backend.BACKENDS['ini'](cfg)
data = ini.read_file()
res = format.filter_vars(cfg, data)
assert len(res) == 1, repr(res)
print(res[0].output_full)

FormatConfig有关更多信息以及各种其他过滤模式的列表,请参阅模块中的类和filter_vars() 函数的文档,confget.format当库用作命令行工具时,所有这些都受支持。

评论:彼得·彭切夫 roam@ringlet.net

下载文件

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

源分布

confget-4.1.1.tar.gz (23.8 kB 查看哈希)

已上传 source

内置分布

confget-4.1.1-py2.py3-none-any.whl (17.8 kB 查看哈希

已上传 py2 py3