Python ConfigParser использует значения по умолчанию, если нет в файле конфигурации - PullRequest
0 голосов
/ 28 февраля 2019

Как лучше всего использовать значение по умолчанию, если оно не определено в файле конфигурации?Например, в приведенном ниже примере, возможно, только listen_address определено в конфигурации, а listen_port отсутствует.

Я пытаюсь что-то вроде этого:

import ConfigParser
from os.path import isfile

if __name__ == "__main__":

    # Set default values
    listen_address = '127.0.0.1'
    listen_port = 8000

    # Check for configurations from file and override defaults
    configFile = './configuration.ini'
    if isfile(configFile):
        configs = ConfigParser.ConfigParser()
        configs.read(configFile)
        try:
            listen_address = configs.get('ServerConfigs', 'listen_address')
        except:
            pass
        try:
            listen_port = configs.get('ServerConfigs', 'listen_port')
        except:
            pass

Но это чувствуетнекрасиво.

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

https://docs.python.org/3/library/configparser.html#fallback-values

if __name__ == "__main__":

    # Set default values
    listen_address = '127.0.0.1'
    listen_port = 8000

    # Check for configurations from file and override defaults
    configFile = './configuration.ini'
    if isfile(configFile):
        try:
            configs = ConfigParser.ConfigParser()
            configs.read(configFile)
            listen_address = configs.get('ServerConfigs', 'listen_address', fallback=listen_address)
            listen_port = configs.get('ServerConfigs', 'listen_port', fallback=listen_port)
        except configparser.Error:
            # do whatever u want
            pass

0 голосов
/ 20 апреля 2019

Вы можете использовать найденный встроенный запасной параметр здесь , который используется, если не удается найти параметр:

listen_address = configs.get('ServerConfigs', 'listen_address', fallback='127.0.0.1')
...