Ian Pilcher wrote: > I am trying to use ConfigParser for the first time (while also writing > my first quasi-serious Python program). Assume that I want to parse a > a configuration file of the following form: > > [section-1] > option-1 = value1 > option-2 = value2 > > [section-2] > option-1 = value3 > option-2 = value4 > > How do a set a default for option-1 *only* in section-1?
You can provide a default value in your code with parser = configparser.ConfigParser() parser.read(configfile) value = parser.get("section-1", "option-1", fallback="default value") Or you can invent your own convention that the default values for "section-1" are found in "section-1-defaults", and then look it up with a small helper function: $ cat cpdemo.ini [section-1-defaults] option-2=default2 [section-1] option-1 = value1 [section-2] option-1 = value2 $ cat cpdemo.py import configparser parser = configparser.ConfigParser() parser.read("cpdemo.ini") def get(section, option, **kw): try: return parser.get(section, option) except configparser.NoOptionError: try: return parser.get(section + "-defaults", option, **kw) except (configparser.NoSectionError, configparser.NoOptionError): pass raise for section in ["section-1", "section-2"]: for option in ["option-1", "option-2"]: value = get(section, option, fallback="#missing") print("{}/{} = {}".format(section, option, value)) $ python3 cpdemo.py section-1/option-1 = value1 section-1/option-2 = default2 section-2/option-1 = value2 section-2/option-2 = #missing -- https://mail.python.org/mailman/listinfo/python-list