Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #53373

Re: argparse - specify order of argument parsing?

Date 2013-08-31 12:50 -0500
From Tim Chase <python.list@tim.thechases.com>
Subject Re: argparse - specify order of argument parsing?
References <slrnl248ua.4b8.!nospam!astrochelonian@hypnotoad.vtr.net>
Newsgroups comp.lang.python
Message-ID <mailman.419.1377971352.19984.python-list@python.org> (permalink)

Show all headers | View raw


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


Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

argparse - specify order of argument parsing? Eduardo Alvarez <!nospam!astrochelonian@gmail.com> - 2013-08-31 13:11 -0400
  Re: argparse - specify order of argument parsing? Tim Chase <python.list@tim.thechases.com> - 2013-08-31 12:50 -0500
  Re: argparse - specify order of argument parsing? Terry Reedy <tjreedy@udel.edu> - 2013-08-31 14:13 -0400
  Re: argparse - specify order of argument parsing? Terry Reedy <tjreedy@udel.edu> - 2013-08-31 14:17 -0400
  Re: argparse - specify order of argument parsing? Peter Otten <__peter__@web.de> - 2013-09-01 08:53 +0200

csiph-web