Python Glossary English

Python 3.2+configparserпонятие

configparser.BasicInterpolation

интерполяция

Интерполяция по умолчанию у ConfigParser: %(имя)s подставляет ключ той же секции или из [DEFAULT]; знак процента пишется как %%.

Синтаксис

configparser.ConfigParser(interpolation=configparser.BasicInterpolation())

Именно из-за неё строка '50%' или пароль с % падает с InterpolationSyntaxError — причём при get(), а не при чтении файла. Выходы: удвоить % в файле, get(..., raw=True) или ConfigParser(interpolation=None). Запись set('k', '5%') отбрасывается сразу с ValueError. Ссылки на другие секции %(...)s не умеет — это ExtendedInterpolation.

Примеры

import configparser
cfg = configparser.ConfigParser()
cfg.read_string("[paths]\nhome = /home/ann\ndata = %(home)s/data\ngain = 80%%\n")
print(cfg.get("paths", "data"))  # → /home/ann/data
print(cfg.get("paths", "gain"))  # → 80%
print(cfg.get("paths", "data", raw=True))  # → %(home)s/data
import configparser
cfg = configparser.ConfigParser()
cfg.read_string("[db]\nrate = 50%\n")  # чтение проходит
try:
    cfg.get("db", "rate")
except configparser.InterpolationSyntaxError as e:
    print(type(e).__name__)  # → InterpolationSyntaxError

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности