Comment ajouter un indicateur facultatif à mes arguments de ligne de commande?
par exemple. donc je peux écrire
python myprog.py
ou
python myprog.py -w
j'ai essayé
parser.add_argument('-w')
Mais je reçois juste un message d'erreur disant
Usage [-w W]
error: argument -w: expected one argument
que je suppose, cela signifie qu'il veut une valeur d'argument pour l'option -w. Comment accepter simplement un drapeau?
Je trouve http://docs.python.org/library/argparse.html plutôt opaque sur cette question.
python
command-line-arguments
argparse
interstar
la source
la source
Réponses:
Comme vous l'avez, l'argument w attend une valeur après -w sur la ligne de commande. Si vous cherchez simplement à basculer un commutateur en définissant une variable
True
ouFalse
, consultez http://docs.python.org/dev/library/argparse.html#action (spécifiquement store_true et store_false)où
action='store_true'
impliquedefault=False
.À l'inverse, vous pourriez avoir
action='store_false'
, ce qui impliquedefault=True
.la source
w
toujoursFalse
.Ajout d'un extrait rapide pour qu'il soit prêt à être exécuté:
Source: myparser.py
Usage:
la source
Voici un moyen rapide de le faire, ne nécessitera rien de plus
sys
.. bien que la fonctionnalité soit limitée:flag = "--flag" in sys.argv[1:]
[1:]
est dans le cas où le nom de fichier complet est--flag
la source
--flag
, il se comportera de manière inattendue, et ce qui est pire, c'est que cela finit souvent par être un défaut de sécurité sur la route, lorsque des données non fiables finissent par être passé à argv. En fin de compte, cette méthode ne devrait tout simplement pas être effectuée. Les vrais analyseurs d'arguments sont juste beaucoup plus robustes ...