43 votes

Peut optparse de Python afficher la valeur par défaut d'une option?

Y a-t-il un moyen de faire en sorte que optparse de Python affiche la valeur par défaut d'une option ou d'un drapeau lors de l'affichage de l'aide avec --help?

54voto

Jarret Hardie Points 36266

Essayez d'utiliser le placeholder de chaîne %default:

# Cet exemple provient de http://docs.python.org/library/optparse.html#generating-help
parser.add_option("-m", "--mode",
                  default="intermediate",
                  help="mode d'interaction : novice, intermédiaire, "
                       "ou expert [par défaut : %default]")

7voto

Arkady Points 4015

Et si vous avez besoin d'un accès programmatique aux valeurs par défaut, vous pouvez y accéder via l'attribut defaults du parseur (c'est un dictionnaire)

7voto

Andrey Petrov Points 91

Et si vous souhaitez ajouter automatiquement des valeurs par défaut à toutes les options que vous avez spécifiées, vous pouvez faire ce qui suit:

for option in parser.option_list:
    if option.default != ("NO", "DEFAULT"):
        option.help += (" " if option.help else "") + "[default: %default]"

0voto

DomTomCat Points 3719

Les commentaires à votre question indiquent déjà qu'il existe une autre façon de parser les arguments appelée argparse. Il a été introduit en Python 3.2. Il remplace en fait optparse mais est utilisé de manière similaire.

argpass est livré avec différentes classes de formatage et par exemple argparse.ArgumentDefaultsHelpFormatter affichera également les valeurs par défaut sans que vous ayez à manipuler manuellement la chaîne d'aide.

Les objets ArgumentParser permettent de personnaliser le formatage de l’aide en spécifiant une classe de formatage alternative. Actuellement, il existe quatre classes telles :

class argparse.RawDescriptionHelpFormatter

class argparse.RawTextHelpFormatter

class argparse.ArgumentDefaultsHelpFormatter

class argparse.MetavarTypeHelpFormatter

Un exemple de la documentation python :

>>> parser = argparse.ArgumentParser(
...     prog='PROG',
...     formatter_class=argparse.ArgumentDefaultsHelpFormatter)
>>> parser.add_argument('--foo', type=int, default=42, help='FOO!')
>>> parser.add_argument('bar', nargs='*', default=[1, 2, 3], help='BAR!')
>>> parser.print_help()
usage: PROG [-h] [--foo FOO] [bar [bar ...]]

positional arguments:
 bar         BAR! (default: [1, 2, 3])

optional arguments:
 -h, --help  show this help message and exit
 --foo FOO   FOO! (default: 42)

voir les classes de formatage d'argparse

0voto

Vlad Bezden Points 5024

Ajoutez argparse.ArgumentDefaultsHelpFormatter à votre analyseur

    import argparse

    parser = argparse.ArgumentParser(
    description='Description de votre application',
    formatter_class=argparse.ArgumentDefaultsHelpFormatter)

de la documentation:

ArgumentDefaultsHelpFormatter ajoute automatiquement des informations sur les valeurs par défaut à chacun des messages d'aide des arguments:

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