On Mittwoch, 25. Januar 2017 10:01:56 Peter Otten wrote: > Hans-Peter Jansen wrote: > > I would like to use a interpolated section name, e.g.: > > > > [Section] > > secref: %{section}s/whatever > > > > should result in: > >>>> config['Section']['secref'] > > > > 'Section/whatever' > > > > Any idea anybody, how to archive this with minimum fuzz? > > If you can live with the existing "basic interpolation", i. e. %(...)s, not > %{...}s:
Yes, of course.. Sorry for the typo. > $ cat config.ini > [Foo] > secref: %(section)s/whatever > [Bar] > secref: %(section)s/whatever > $ cat demo.py > import configparser > > > class Interpolation(configparser.BasicInterpolation): > def before_get(self, parser, section, option, value, defaults): > defaults = defaults.copy() > defaults["section"] = section > return super().before_get(parser, section, option, value, defaults) > > > p = configparser.ConfigParser(interpolation=Interpolation()) > p.read("config.ini") > for section in "Foo", "Bar": > print(section, "-->", p[section]["secref"]) > $ python3 demo.py > Foo --> Foo/whatever > Bar --> Bar/whatever > $ Brilliant as usual, thank you, Peter. This is exactly, what I was after. Have a nice weekend, Pete -- https://mail.python.org/mailman/listinfo/python-list