Расширенная интерполяция не работает в configparser

Я пытался использовать модуль configparser из стандартной библиотеки в python 3.6 или python 3.5.1

Мой INI-файл выглядит так:

[common]
domain = http://some_domain_name:8888
about = about/
loginPath = /accounts/login/?next=/home
fileBrowserLink = /filebrowser
partNewDirName = some_dir

[HUE_310]
partNewFilePath = ${common:domain}

Моя "основная" программа выглядит так:

from configparser import ConfigParser

parser = ConfigParser()
parser.read('configfile.ini')

lll = parser.get('HUE_310', 'partNewFilePath')
print(lll)

Вместо http://some_domain_name:8888 я получил ${common:domain}

Я использую Pycharm Community в качестве своей IDE. Я использую virtualenv.

Я понятия не имею, что не так с моим кодом...

1 ответ

Решение

Если вы хотите расширенную интерполяцию, вы должны создать экземпляр configparser.ExtendedInterpolation класс, вызывая его, а затем используя это с interpolation= Ключевое слово аргумент при создании ConfigParser экземпляр, как показано ниже:

from configparser import ConfigParser, ExtendedInterpolation

parser = ConfigParser(interpolation=ExtendedInterpolation())
parser.read('configfile.ini')

lll = parser.get('HUE_310', 'partNewFilePath')
print(lll)  # -> http://some_domain_name:8888
Другие вопросы по тегам