Как я могу взять несколько переменных из конфигурации одновременно? - PullRequest
0 голосов
/ 05 июля 2019

Я устанавливаю скрипт, в котором мне нужно взять несколько переменных из моей конфигурации одновременно. Я установил свою конфигурацию как: config = configparser.ConfigParser().

Я пытался взять эти переменные, используя символ *.

[part1]
variable1 = 10
variable2 = 20

Я пытался взять его с:

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

но этот способ не работает.

Я ищу способ понять это, например, чтобы включить его в список. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 05 июля 2019

До

cfg_items = config.items('part1')

чтобы получить все конфиги в разделе.

Затем отфильтруйте ключи словаря, используя заданное вами регулярное выражение.

Вы можете сделать это за один шаг

cfg_list = [val for var, val in config.items('part1') if var.startswith('variable')]
1 голос
/ 05 июля 2019

Я бы просто использовал понимание списка, чтобы перебрать нужные вам переменные.

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'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...