web-dev-qa-db-fra.com

Que signifient métavar et action dans argparse en Python?

Je lis le module argparse . Je me suis coincé comme quoi métavar et action signifie

>>> 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)')

J'ai peut-être manqué mais d'après ce que j'ai lu, je n'ai pas pu trouver de définitions pour metavar et action (action="store_const", etc). que signifient-ils réellement?

43
eagertoLearn

metavar est utilisé dans les messages d'aide à la place d'un argument attendu. Voir FOO est un metavar par défaut ici:

>>> 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 définit comment gérer les arguments de la ligne de commande: stockez-le comme une constante, ajoutez-le dans une liste, stockez une valeur booléenne, etc. Plusieurs actions intégrées sont disponibles, plus il est facile d'écrire une coutume une.

18
alecxe

Metavar: Il fournit un nom différent pour l'argument facultatif dans les messages d'aide. Fournissez une valeur pour l'argument du mot clé metavar dans add_argument ().

par exemple:

>>> 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

Référence - http://www.usatlas.bnl.gov/~caballer/files/argparse/add_argument.html

Action: Les arguments peuvent déclencher différentes actions, spécifiées par l'argument action de add_argument (). Il existe six actions intégrées qui peuvent être déclenchées lorsqu'un argument est rencontré:

(1) Store - Enregistrez la valeur, après l'avoir éventuellement convertie en un autre type. Il s'agit de l'action par défaut prise si aucune n'est spécifiée explicitement.

(2) store_true/store_false - Enregistre la valeur booléenne appropriée.

(3) store_const - Enregistre une valeur définie dans le cadre de la spécification d'argument, plutôt qu'une valeur provenant des arguments analysés. Ceci est généralement utilisé pour implémenter des indicateurs de ligne de commande qui ne sont pas booléens.

(4) ajouter - Enregistrer la valeur dans une liste. Plusieurs valeurs sont enregistrées si l'argument est répété.

(5) append_const - Enregistre une valeur définie dans la spécification d'argument dans une liste.

(6) version - Imprime les détails de la version du programme, puis quitte.

Référence - http://bioportal.weizmann.ac.il/course/python/PyMOTW/PyMOTW/docs/argparse/index.html

22
subhadarshi samal

Ce que vous nous avez montré n'est que le premier exemple. Les sections pertinentes des documents Python:

http://docs.python.org/dev/library/argparse.html#action

http://docs.python.org/dev/library/argparse.html#metavar

3
hpaulj