Just a fun exercise to unify some of the major input methods for a script into a single dictionary. Here is the output, given a gr.conf file in the same directory with the contents stated below:
[EMAIL PROTECTED] ~/proj/mddl4/test $ ./inputs.py {'source_db': '/home/sweet/home.db'} [EMAIL PROTECTED] ~/proj/mddl4/test $ source_db="test_env" ./inputs.py {'source_db': 'test_env'} [EMAIL PROTECTED] ~/proj/mddl4/test $ ./inputs.py -f "test_cli" {'source_db': 'test_cli'} For the file ========= #!/usr/bin/env python #Goal: unification of environment variables, command line, and # configuration file settings. # The .conf file is the specification. # Optional environment variables can override. # Optional command-line inputs trump all. # Example is a file spec for a source database for an application. # .conf has a contents like: #================================ # [CONF] # source_db=/home/sweet/home.db #TODO: # 1. Decide (make an option?) to retain the simple dictionary or build a # class from the options. # 2. Allow for multiple .conf locations, trying to be cool like # xorg.conf from ConfigParser import SafeConfigParser from optparse import OptionParser import os CONF = "CONF" #section in .conf file CONF_FILE = "gr.conf" #name of config file PLACEBO = "placebo" #mindless default that we don't want gconf = {} #all your config are belong to here parser = OptionParser() parser.add_option( "-f" , "--file" , dest = "source_db" , help = "source database" , default = PLACEBO ) (cl_opts, args) = parser.parse_args() config = SafeConfigParser() config.read(CONF_FILE) file_conf = dict(config.items(CONF)) for k in file_conf: gconf[k]=file_conf[k] if os.environ.has_key(k): gconf[k] = os.environ[k] if cl_opts.__dict__.has_key(k): if cl_opts.__dict__[k]!=PLACEBO: gconf[k] = cl_opts.__dict__[k] print gconf -- http://mail.python.org/mailman/listinfo/python-list