7 votes

Python argparse: Afficher le mode parse_known_args dans la chaîne d'utilisation

Lors de l'utilisation du module argparse de Python, vous pouvez utiliser parse_known_args() pour analyser uniquement les arguments connus du parseur, et tout argument supplémentaire est renvoyé séparément.

Cependant, ce fait n'est pas indiqué dans la chaîne d'utilisation/aide. Bien entendu, je pourrais le mettre dans le champ description du parseur, mais je me demande s'il existe un moyen élégant de l'inclure dans la ligne d'utilisation.

Ce que je recherche est un résultat comme par exemple usage: test [-h] ... au lieu de usage: test [-h]

4voto

Sam Mussmann Points 3263

Je pense que vous pourriez faire cela avec une combinaison de format_usage() et de l'attribut ArgumentParser usage. Notez que cette section montre l'utilisation comme un argument clé du constructeur, cependant, en inspectant la source pour usage montre que vous pouvez y accéder après la construction comme parser.usage.

J'imagine que votre solution finale ressemblerait à quelque chose comme :

parser = argparse.ArgumentParser()
# Ajouter des arguments...
usage = parser.format_usage()
parser.usage = usage.rstrip() + ' ...\n'

3voto

chepner Points 54078

parse_known_args() est pratique pour le programmeur écrivant le programme, ce n'est pas quelque chose dont l'utilisateur du programme doit se préoccuper. Si vous définissez correctement vos arguments en ligne de commande, argparse vous donne automatiquement quelque chose de similaire :

>>> import argparse
>>> p = argparse.ArgumentParser(prog='command')
>>> x=p.add_argument("foo", nargs=argparse.REMAINDER)
>>> p.parse_args(["--help"])
usage: command [-h] ...

positional arguments:
  foo

optional arguments:
  -h, --help  show this help message and exit

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