Python 3.2+configparserпонятие
configparser.Interpolation
интерполяция
Базовый класс интерполяции, который ничего не подставляет. От него наследуют свою схему подстановок в значения конфига.
Синтаксис
class My(configparser.Interpolation):
def before_get(self, parser, section, option, value, defaults): ...
ConfigParser(interpolation=None) внутри использует именно его, так что это тот же режим «значения как есть». Свою схему пишут, переопределяя before_get (при чтении значения) и, при желании, before_set. Передавать нужно экземпляр: класс без скобок даёт TypeError уже в конструкторе парсера.
Примеры
import configparser
class Home(configparser.Interpolation):
def before_get(self, parser, section, option, value, defaults):
return value.replace("~", "/home/user")
cfg = configparser.ConfigParser(interpolation=Home())
cfg.read_string("[paths]\ndata = ~/data\n")
print(cfg.get("paths", "data")) # → /home/user/data
import configparser
try:
configparser.ConfigParser(interpolation=configparser.Interpolation)
except TypeError:
print("TypeError: нужен экземпляр") # → TypeError: нужен экземпляр
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности