Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does metavar and action mean in argparse in Python?

I am reading through argparse module. I got stuck as what to metavar and action means

>>> parser.add_argument('integers', metavar='N', type=int, nargs='+', ...                     help='an integer for the accumulator') >>> parser.add_argument('--sum', dest='accumulate', action='store_const', ...                     const=sum, default=max, ...                     help='sum the integers (default: find the max)') 

I might have missed but from what I read, I could not find definitions for metavar and action (action="store_const", etc). what do they actually mean?

like image 449
eagertoLearn Avatar asked Oct 01 '13 19:10

eagertoLearn


People also ask

What does DEST mean in Argparse?

dest is equal to the first argument supplied to the add_argument() function, as illustrated. The second argument, radius_circle , is optional. A long option string --radius supplied to the add_argument() function is used as dest , as illustrated.

What is Store_true in Python?

The store_true option automatically creates a default value of False. Likewise, store_false will default to True when the command-line argument is not present.

What is Add_argument in Python?

Positional Arguments add_argument('indir', type=str, help='Input dir for videos') created a positional argument. For positional arguments to a Python function, the order matters. The first value passed from the command line becomes the first positional argument.

How do you add an optional argument in Argparse?

Optional arguments are useful if you want to give the user a choice to enable certain features. To add an optional argument, simply omit the required parameter in add_argument() . args = parser. parse_args()if args.


2 Answers

Metavar: It provides a different name for optional argument in help messages. Provide a value for the metavar keyword argument within add_argument().

>>> parser = argparse.ArgumentParser() >>> parser.add_argument('--foo', metavar='YYY') >>> parser.add_argument('bar', metavar='XXX') >>> parser.parse_args('X --foo Y'.split()) Namespace(bar='X', foo='Y') >>> parser.print_help() usage:  [-h] [--foo YYY] XXX  positional arguments:   XXX  optional arguments:   -h, --help  show this help message and exit   --foo YYY 

Reference: http://www.usatlas.bnl.gov/~caballer/files/argparse/add_argument.html

Action: Arguments can trigger different actions, specified by the action argument to add_argument(). There are six built-in actions that can be triggered when an argument is encountered:

  1. store: Save the value, after optionally converting it to a different type. This is the default action taken if none is specified explicitly.

  2. store_true/store_false: Save the appropriate boolean value.

  3. store_const: Save a value defined as part of the argument specification, rather than a value that comes from the arguments being parsed. This is typically used to implement command line flags that aren’t booleans.

  4. append: Save the value to a list. Multiple values are saved if the argument is repeated.

  5. append_const: Save a value defined in the argument specification to a list.

  6. version: Prints version details about the program and then exits.

Reference: http://bioportal.weizmann.ac.il/course/python/PyMOTW/PyMOTW/docs/argparse/index.html

like image 76
subhadarshi samal Avatar answered Sep 23 '22 07:09

subhadarshi samal


metavar is used in help messages in a place of an expected argument. See FOO is a default metavar here:

>>> parser = argparse.ArgumentParser() >>> parser.add_argument('--foo') >>> parser.add_argument('bar') >>> parser.parse_args('X --foo Y'.split()) Namespace(bar='X', foo='Y') >>> parser.print_help() usage:  [-h] [--foo FOO] bar ... 

action defines how to handle command-line arguments: store it as a constant, append into a list, store a boolean value etc. There are several built-in actions available, plus it's easy to write a custom one.

like image 33
alecxe Avatar answered Sep 19 '22 07:09

alecxe