Frage

Warum wird Argparse diese Argumente nicht analysieren?

--foo 1 2 3 bar

Verwendung

parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='+')                  
parser.add_argument('bar')

Was den folgenden Fehler gibt:

Fehler: Zu wenige Argumente

Wenn ich zuerst das Barargument bestehe, funktioniert es:

bar --foo 1 2 3   

Nun ist dies an sich nicht schlecht. Ich kann mit den Positionsargumenten zuerst leben. Zuerst ist es nur so, dass dieses Verhalten nicht mit der Hilfe des Argars übereinstimmt, die für uns schafft, die besagt, dass die Bar zuletzt sein sollte:

Verwendung: argParSetest.py [-h] [--foo foo [foo ...]] Bar

Wie können Sie diese Arbeit mit konsequentem Hilfe -Text machen?

Hier ist eine vollständige Testprogramm.

War es hilfreich?

Lösung

Versuchen Sie vielleicht, Flags aus dem Eingang zu machen und diese Optionen im add_argument auf fordered = true zu setzen?

http://docs.python.org/dev/library/argparse.html#the-add-argument-method

Andere Tipps

nargs='+' fordert ArgParse an, alle verbleibenden Argumente zu sammeln, also bar ist enthalten. Es hat keine magische Möglichkeit, zu erraten, dass Sie beabsichtigen bar ein sinnvolles Argument für sich selbst sein und nicht Teil der Args genommen --foo.

Das Beispiel in den Dokumenten bezieht sich auf eine einfache --foo Argument, nicht eins mit nargs='+'. Achten Sie darauf, den Unterschied zu verstehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top