43 Stimmen

Kann Pythons optparse den Standardwert einer Option anzeigen?

Gibt es eine Möglichkeit, Pythons optparse dazu zu bringen, den Standardwert einer Option oder eines Flags zu drucken, wenn die Hilfe mit --help angezeigt wird?

55voto

Jarret Hardie Punkte 89900

Versuchen Sie, die %default String-Platzhalter:

# This example taken from http://docs.python.org/library/optparse.html#generating-help
parser.add_option("-m", "--mode",
                  default="intermediate",
                  help="interaction mode: novice, intermediate, "
                       "or expert [default: %default]")

8voto

Andrey Petrov Punkte 121

Und wenn Sie allen Optionen, die Sie angegeben haben, automatisch Standardwerte hinzufügen möchten, können Sie wie folgt vorgehen:

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

7voto

Arkady Punkte 12965

Und wenn Sie programmatischen Zugriff auf die Standardwerte benötigen, können Sie diese über die defaults Attribut des Parsers (es ist ein Diktat)

0voto

DomTomCat Punkte 7515

Die Kommentare zu Ihrer Frage weisen bereits darauf hin, dass es eine weitere Möglichkeit gibt, Argumente zu analysieren, die argparse . Es wurde in Python 3.2 eingeführt. Es veraltet eigentlich optparse wird aber in ähnlicher Weise verwendet.

argpass kommt mit verschiedenen Formatierungsklassen und zum Beispiel argparse.ArgumentDefaultsHelpFormatter druckt auch die Standardwerte aus, ohne dass Sie die Hilfszeichenfolge manuell manipulieren müssen.

ArgumentParser-Objekte ermöglichen die Anpassung der Hilfeformatierung durch die Angabe einer alternativen Formatierungsklasse. Derzeit gibt es vier solche Klassen:

Klasse argparse.RawDescriptionHelpFormatter

Klasse argparse.RawTextHelpFormatter

Klasse argparse.ArgumentDefaultsHelpFormatter

Klasse argparse.MetavarTypeHelpFormatter

Ein Beispiel aus den Python-Dokumenten:

>>> 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)

siehe argparse-Formatierungsklassen

0voto

Vlad Bezden Punkte 71128

Hinzufügen argparse.ArgumentDefaultsHelpFormatter zu Ihrem Parser

    import argparse

    parser = argparse.ArgumentParser(
    description='Your application description',
    formatter_class=argparse.ArgumentDefaultsHelpFormatter)

aus der Dokumentation:

ArgumentDefaultsHelpFormatter fügt automatisch Informationen über Standardwerte zu den einzelnen Hilfetexten der Argumente hinzu: Blockquote

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X