如何同时从配置中获取多个变量?

时间:2019-07-05 14:22:43

标签: python config

我正在设置一个脚本,该脚本需要同时从配置中获取多个变量。我将配置设置为:config = configparser.ConfigParser()

我尝试使用*符号来获取这些变量。

[part1]
variable1 = 10
variable2 = 20

我尝试将其用于:

variable = config.get('part1', 'variable*')

但是这种方式行不通。

我寻求一种实现方式,例如将其放入列表中。 预先感谢。

2 个答案:

答案 0 :(得分:2)

cfg_items = config.items('part1')

以获取本节中的所有配置。

然后使用您定义的正则表达式过滤字典关键字。

您可以一步一步完成

cfg_list = [val for var, val in config.items('part1') if var.startswith('variable')]

答案 1 :(得分:1)

我只会使用列表推导来迭代所需的变量。

to_get = ('variable1', 'variable2')
values = [config.get('part1', x) for x in to_get]

variable*的问题在于它假定配置文件将仅包含您期望的选项。要明确,只获取想要的内容。

ConfigParser在Python 3.2或更高版本中支持映射协议:

values = [config['part1'][x] for x in to_get]

这也为使用operator.itemgetter打开了大门。根据重构的方式,使用范围可能从丑到有用。直接的方法看起来像

values = operator.itemgetter(*to_get)(config['part1'])