Проблемы с проверкой раздела с использованием configparser в Python - PullRequest
0 голосов
/ 05 апреля 2020

Я написал следующую функцию в Python, используя модули os и configparser:

def alter_config(section, key, value):
    if os.path.isfile('config.ini') is True:
        config = configparser.RawConfigParser()
        config.read('config.ini')
        if section in config is True:
            config.set(section, key, value)
            with open('config.ini', 'w') as configfile:
                config.write(configfile)
            return 1
        else:
            return 3
    else:
        return 2

Проблема в том, что функция всегда возвращает int (3), несмотря на то, что раздел и ключ существуют в config.ini , Если я запускаю следующий код, все в порядке, и значение изменяется:

def alter_config(section, key, value):
    if os.path.isfile('config.ini') is True:
        config = configparser.RawConfigParser()
        config.read('config.ini')
        config.set(section, key, value)
        with open('config.ini', 'w') as configfile:
            config.write(configfile)
        return 1
    else:
        return 2

На данный момент config.ini выглядит так:

[PATHS]
data = /data

[API_KEYS]
marinetraffic_api = Test

Я вызываю функцию как это:

alter_config('API_KEYS', 'marinetraffic_api', 'test_value')

Редактировать: я пробовал следующее, и это более запутанно:

def test(section):
    if os.path.isfile('config.ini') is True:
        config = configparser.RawConfigParser()
        config.read('config.ini')
        print(section in config)
        if section in config is True:
            print(True)
        else:
            print(False)

test('API_KEYS')

Результат: True False

1 Ответ

0 голосов
/ 05 апреля 2020

Нашел решение. Тем не менее, я понятия не имею, почему первая попытка не сработала:

def alter_config(section, key, value):
    if os.path.isfile('config.ini') is True:
        config = configparser.RawConfigParser()
        config.read('config.ini')
        check_section = section in config
        if check_section is True:
            config.set(section, key, value)
            with open('config.ini', 'w') as configfile:
                config.write(configfile)
            return 1
        else:
            return 3
    else:
        return 2
...