Hallo Ich versuche, Argparse mit mehreren Subparser konfigurieren, die nur bestimmte lange Argumente akzeptieren. Hier unten ist der CodeVerwenden Sie Python Argparse mit mehreren Subparsern
import argparse
parser = argparse.ArgumentParser(prog='program', description='Prog Description')
subparsers = parser.add_subparsers(help='choices')
parser.add_argument('--choice', '-c', choices=['a', 'apple', 'b', 'banana', 'l', 'lemmon', 'p', 'papaya'], type=str, help='Menu Choices', required=True)
a_parser = subparsers.add_parser("a")
b_parser = subparsers.add_parser("b")
l_parser = subparsers.add_parser("l")
p_parser = subparsers.add_parser("p")
a_parser.add_argument("--peel")
b_parser.add_argument("--peel")
l_parser.add_argument("--lamount")
p_parser.add_argument("--pamount",required=True,type=str)
Aber ich versage bei folgenden Punkten.
- Subparser sollten sowohl Kurzform als auch Langform akzeptieren. Ex.
prog -c a
undprog -c apple
sind beide legal und gleich argumens für subparsers sind nicht erforderlich, außer für die
--pamount
. Aber Code scheint sie zu erwarten, da ich folgenden Fehler erhalte, wenn ich einen gültigen Modus ausführepython prog -c a
usage: programm [-h] --choice {a, apfel, b, banane, l, lemmon, p, papaya} {a, p, b, l} ... Programm: Fehler: zu wenig Argumente
ich bin froh, wenn mir jemand einige Richtlinien, diese Probleme zu lösen bieten könnte. Danke!
Danke für die Antwort und es war wirklich hilfreich bei der Ermittlung der Ansatz. Allerdings ist der Fehler immer noch da, als ich gerade überprüft habe, dass die 'Aliase' in Python 2.7 neu sind und ich Python 2.6 benutze und es in dieser Version benutzen muss. Auch wenn ich 'dest = 'choice' anfüge, kann ich den Argumenten keine Kurzform' c' hinzufügen. –
Sie sollten in der Lage sein, die 'argparse.py' Datei von einem 2.7 Python zu stehlen und in Ihr eigenes Verzeichnis zu legen. – hpaulj
Ja, ich werde eine ähnliche Sache tun, wie die aktuelle Argarse-Modul-Version ist 1.2.1 und ich werde es auf 1.4.1 zu aktualisieren. Dies sollte das Problem lösen. :) –