57 votes

Utilisation de 'argparse.ArgumentError' en Python

Je voudrais utiliser le ArgumentError sauf dans le argparse module Python, mais je ne peux pas comprendre comment l'utiliser. La signature indique qu'elle devrait être appelée ArgumentError(argument, message) , mais je ne peux pas comprendre ce que devrait être argument Je pense que cela devrait faire partie de l'objet de l'analyseur, mais je n'ai trouvé aucune documentation à ce sujet.

22voto

ukrutt Points 1770

Alors que parser.error() est probablement ce que la plupart des gens veulent, il est également possible d'utiliser argparse.ArgumentError() (comme le demande la question.) Vous avez besoin d'une référence à l'argument, comme le bar_arg dans l'exemple ci-dessous :

 import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--foo')
bar_arg = parser.add_argument('--bar')

args = parser.parse_args()
if args.bar == 'xyzzy':
    raise argparse.ArgumentError(bar_arg, "Can't be 'xyzzy'")

if args.foo == 'xyzzy':
    parser.error("Can't be 'xyzzy'")

Cela se traduira par une sortie comme celle ci-dessous :

 $ python argparse_test.py --foo xyzzy
usage: argparse_test.py [-h] [--foo FOO] [--bar BAR]
argparse_test.py: error: Can't be 'xyzzy'

$ python argparse_test.py --bar xyzzy
Traceback (most recent call last):
  File "argparse_test.py", line 10, in <module>
    raise argparse.ArgumentError(bar_arg, "Can't be 'xyzzy'")
argparse.ArgumentError: argument --bar: Can't be 'xyzzy'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X