On 2013-08-31 13:11, Eduardo Alvarez wrote: > When using argparse, is there a way to specify in what order > arguments get parsed? I am writing a script whose parameters can be > modified in the following order: > > Defaults -> config file -> command-line switches. > > However, I want to give the option of specifying a config file > using a command line switch as well, so logically, that file should > be parsed before any other arguments are applied. However, it seems > that parse_args() parses arguments in the order they're given, so > if the config file switch is not given first, the config file will > overwrite whatever was in the command-line switches, which should > have higher priority.
While I haven't come up with a good solution using argparse/optparse alone, I've found that it's easier (for processing) to specify the config file as an environment variable. So rather than doing my_prog.py -c /path/to/config.ini arg1 arg2 ... I just do MY_PROG_CONF=/path/to/config.ini my_prog.py arg1 arg2 ... ...at least on *nix systems; on Win32, it's c:\temp> set MY_PROG_CONF=c:\path\to\config.ini c:\temp> python my_prog.py arg1 arg2 ... Then you just intercept the config-file name from os.environ: config_file = os.environ.get( "MY_PROG_CONF", default_ini_location) -tkc -- http://mail.python.org/mailman/listinfo/python-list