Python-argparse optional sub-Argumente

Möchte ich ein argument für mein Programm, dass einige erforderliche Parameter zusammen mit einigen optionalen Parametern. So etwas wie dieses:

[--print text [color [size]]

also man könnte es passieren diesen:

mycommand --print hello
mycommand --print hello blue
mycommand --print hello red 12

Kann es mehrere von diesen, so muss es sein, eine einzelne add_argument. Zum Beispiel:

[--print text [color]] [--output filename [overwrite]]

Kann ich erreichen Argumenten, die nahe an dem, was ich will:

>>> parser = argparse.ArgumentParser()
>>> act = parser.add_argument('--foo', nargs=3, metavar=('x','y','z'))
>>> act = parser.add_argument('--bar', nargs='?')
>>> act = parser.add_argument('--baz', nargs='*')
>>> parser.print_help()
usage: [-h] [--foo x y z] [--bar [BAR]] [--baz [BAZ [BAZ ...]]]

optional arguments:
  -h, --help            show this help message and exit
  --foo x y z
  --bar [BAR]
  --baz [BAZ [BAZ ...]]

aber nicht ganz. Gibt es eine Möglichkeit, dies zu tun mit argparse? Ich weiß, ich könnte machen Sie alle nargs="*" aber dann --Hilfe würde nicht die Liste mit den Namen der optionalen Argumente. Wenn ich den pass nargs="*" und ein Tupel für metavar, argparse wirft eine Ausnahme.

InformationsquelleAutor jterrace | 2011-03-10
Schreibe einen Kommentar