#!/usr/bin/env python # encoding: utf-8 # # Copyright (c) 2010 Doug Hellmann. All rights reserved. # """Default handling. """ #end_pymotw_header import ConfigParser # Define the names of the options option_names = [ 'from-default', 'from-section', 'section-only', 'file-only', 'init-only', 'init-and-file', 'from-vars', ] # Initialize the parser with some defaults parser = ConfigParser.SafeConfigParser( defaults={'from-default':'value from defaults passed to init', 'init-only':'value from defaults passed to init', 'init-and-file':'value from defaults passed to init', 'from-section':'value from defaults passed to init', 'from-vars':'value from defaults passed to init', }) print 'Defaults before loading file:' defaults = parser.defaults() for name in option_names: if name in defaults: print ' %-15s = %r' % (name, defaults[name]) # Load the configuration file parser.read('with-defaults.ini') print '\nDefaults after loading file:' defaults = parser.defaults() for name in option_names: if name in defaults: print ' %-15s = %r' % (name, defaults[name]) # Define some local overrides vars = {'from-vars':'value from vars'} # Show the values of all of the options print '\nOption lookup:' for name in option_names: value = parser.get('sect', name, vars=vars) print ' %-15s = %r' % (name, value) # Show error messages for options that do not exist print '\nError cases:' try: print 'No such option :', parser.get('sect', 'no-option') except ConfigParser.NoOptionError, err: print str(err) try: print 'No such section:', parser.get('no-sect', 'no-option') except ConfigParser.NoSectionError, err: print str(err)