Forcing getopt to process a specific option first??

Peter Otten __peter__ at web.de
Thu Sep 18 13:52:36 EDT 2003


Dan Rawson wrote:

> Is there any way to force getopt to process one option first??  I'd like
> to be able to pass in the name of a configuration file for my application,
> then have the remaining command-line parameters over-ride the
> configuration file if they are present.

The easiest solution would be to make the config file the mandatory first
argument of the command line and then call

getopt.getopt(sys.argv[2:], options)

Below is another approach, that might fit your needs:

import getopt

#sample args
args = ["-c", "config.txt", "-r", "-i", "specialin.txt"]

options, args = getopt.getopt(args, "c:ri:o:")
useroptions = dict(options)

if "-c" in useroptions:

    #set defaults
    defaultoptions = {"-i": "defaultin.txt", "-o": "defaultout.txt"}

    del useroptions["-c"]

    #override defaults
    defaultoptions.update(useroptions)
    options = defaultoptions.items()

print options

Peter




More information about the Python-list mailing list