Расширенная интерполяция не работает в 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