Question

Pourquoi ne argparse analyser ces arguments?

--foo 1 2 3 bar

Utilisation

parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='+')                  
parser.add_argument('bar')

qui donne l'erreur suivante:

erreur: trop peu d'arguments

Si je passe l'argument de la barre d'abord bien, cela fonctionne:

bar --foo 1 2 3   

Maintenant, ce qui en soi est pas trop mal. Je peux vivre avec avoir les arguments de position d'abord, il est juste que ce comportement est incompatible avec l'aide argparse crée pour nous, ce qui indique que la barre devrait être le dernier:

Utilisation: argparsetest.py [-h] [--foo FOO [FOO ...]] bar

Alors, comment faites-vous ce travail avec le texte d'aide cohérente?

Voici une complète programme de test .

Était-ce utile?

La solution

Peut-être essayer de faire --input --output drapeaux et la définition de ces options nécessaires = True dans le add_argument?

http://docs.python.org/ dev / bibliothèque / argparse.html # l'argument-add-méthode

Autres conseils

nargs='+' dit argparse de rassembler tous les args restant ensemble, donc bar est inclus. Il n'a aucun moyen magique pour vous deviner l'intention bar être un argument significatif par lui-même et ne fait pas partie des args prises pour --foo.

L'exemple dans la documentation fait référence à un simple argument --foo, pas un avec nargs='+'. Assurez-vous de comprendre la différence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top