Ich habe folgenden TestcodeWie Sub-Parser-Argumente in separaten Namespace mit Argparse haben?
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbose", default = 0, type=int)
subparsers = parser.add_subparsers(dest = "parser_name")
parser_lan = subparsers.add_parser('car')
parser_lan.add_argument("--boo")
parser_lan.add_argument("--foo")
parser_serial = subparsers.add_parser('bus')
parser_serial.add_argument("--fun")
print parser.parse_args()
die zwei Unter Parsern definiert, einen anderen Satz von Argumenten aufweisen. Als ich den Testcode als
tester.py --verbose 3 car --boo 1 --foo 2
nennen bekomme ich das erwartete Ergebnis
Namespace(boo='1', foo='2', parser_name='car', verbose=3)
Was will ich stattdessen haben, ist der Wert von jedem subparser in einem eigenen Namensraum oder dict, so etwas wie
Namespace(subparseargs={boo:'1', foo:'2'}, parser_name='car', verbose=3)
so dass die Argumente von jedem Subparser logisch getrennt von den Argumenten vom Hauptparser sind (wie in diesem Beispiel verbose
).
Wie kann ich dies erreichen, mit den Argumenten für jeden Subparser im gleichen Namensraum (im Beispiel subparseargs
).
Beantwortet Ihre Frage nicht, aber moderne [argparse wrappers] (http://stackoverflow.com/q/13248487/989121) sind viel mehr Spaß mit der Arbeit als roh argarse. – georg