Материал построен на примере INI файла, который был создан в обзорном материале модуля configparser
Как и в словаре, для значений, которых может не быть в INI-файле можно использовать метод словаря dict.get()
для предоставления запасных значений:
>>> import configparser >>> config = configparser.ConfigParser() >>> config('DEFAULT').get('Port') >>> config('DEFAULT').get('Port', '50022') # '50022' >>> config['topsecret.server.com'].get('CompressionLevel') # '9' >>> config['topsecret.server.com'].get('Cipher', '3des-cbc') # '3des-cbc'
Обратите внимание, что значения секции по умолчанию DEFAULT
имеют приоритет над запасными значениями. Например, в примере разбираемого файла ключ CompressionLevel
был указан только в разделе DEFAULT
. Если попытаться получить его из раздела topsecret.server.com
, то всегда будем получать значение по умолчанию, даже если мы укажем запасной вариант:
>>> config['topsecret.server.com'].get('CompressionLevel', '3') # '9'
Еще одна вещь, о которой следует помнить, это то, что метод config.get()
синтаксического анализатора configparser.ConfigParser()
предоставляет пользовательский, более сложный интерфейс, поддерживаемый для обратной совместимости. При использовании этого метода запасное значение может быть предоставлено через ключевой fallback
:
>>> config.get('bitbucket.org', 'monster', ... fallback='No such things as monsters') # 'No such things as monsters'
Один и тот же аргумент fallback
можно использовать с методами config.getint()
, config.getfloat()
и config.getboolean()
, например:
>>> 'BatchMode' in config['topsecret.server.com'] # False >>> config['topsecret.server.com'].getboolean('BatchMode', fallback=True) # True # добавим значение в секцию `DEFAULT` >>> config['DEFAULT']['BatchMode'] = 'no' # Приоритет секции `DEFAULT` перед запасными значениями >>> config['topsecret.server.com'].getboolean('BatchMode', fallback=True) # False