Используя встроенную python configparser
, я хочу проанализировать логические значения в моем файле конфигурации.
Пример:
[SECTION]
foo = False
Однако при обращении к переменной я замечаю что он обрабатывается как строка.
>>> config['SECTION']['foo']
'False'
Кроме того, когда я пытаюсь исправить это поведение и переназначить ключ foo
на его правильный логический представитель, я получаю эту ошибку
>>> if config['SECTION']['foo'] == 'True':
... config['SECTION']['foo'] = True
... elif config['SECTION']['foo'] == 'False':
... config['SECTION']['foo'] = False
... else:
... Exception("foo must be bool")
TypeError: option values must be strings
К сожалению, такое поведение приводит к проблемным c ситуациям, когда следующее неожиданно работает
print(config['SECTION']['foo']) # 'False'
if config['SECTION']['foo']:
print('do things when foo is True') # this runs, but foo actually
# represents false, but in string form
Как я должен иметь дело с логическими значениями при синтаксическом анализе configparser
с наименьшим количеством накладных расходов, насколько это возможно?