Möglich? möglicherweise, aber ich würde es nicht empfehlen. argparse
ist das nicht beste Werkzeug zum Parsen dieser Art von Eingabe, oder umgekehrt, dies ist eine schlechte Argument-Spezifikation aus einer argparse
Perspektive.
Haben Sie darüber nachgedacht, wie die Linie usage
aussehen sollte? Wie würde dies Ihren Benutzern erklären?
Wie würden Sie diese Arbeit von sys.argv
direkt analysieren? Es sieht aus wie Sie 3 Stücke sammeln konnte:
prog = sys.argv[0]
arg1 = sys.argv[1]
keys = sys.argv[2::2]
# maybe strip -- off each
values = sys.argv[3::2]
kvdict = {k:v for k, v in zip(keys, values)}
Es gibt noch andere SO Fragen zu Generika key:value
Paare zu fragen. Dinge wie:
--args key1:value1 key2:value2
mit nargs='*'
und eine Aktion, die jede Eingabekette spaltet auf :
(oder =
) und speichert die Dinge gehandhabt werden durch key
Dies kann.
Ihre Anforderung ist am wenigsten zugänglich für argparse
verwenden, da es die ganze Idee der übereinstimmenden Argument Flags mit Zeichenfolgen in argv
umgehen muss. Es erfordert, einige wie, alle normalen argparse
Parsing ausschalten.
Sieht aus wie ich die gleiche Sache ein paar Jahren vorgeschlagen vor
Parse non-pre-defined argument
oder früher
Using argparse to parse arguments of form "arg= val"
Einer der früheren Antworten früher 'parse_known_args', aber dann verwendet, um die' sys.argv' Stil für Parsen der 'Unbekannte'. Ich mag Ihre Idee, diese Flags dem Parser hinzuzufügen und erneut zu analysieren. Hackish-Anforderungen erfordern Hack-Lösungen. :) – hpaulj