Optparse, die alte Version ignoriert einfach alle nicht erkannten Argumente und fährt fort. In den meisten Situationen ist dies nicht ideal und wurde in Argparse geändert. Es gibt jedoch einige Situationen, in denen Sie nicht erkannte Argumente ignorieren und die von Ihnen angegebenen Argumente analysieren möchten.
Beispielsweise:
parser = argparse.ArgumentParser()
parser.add_argument('--foo', dest="foo")
parser.parse_args()
$python myscript.py --foo 1 --bar 2
error: unrecognized arguments: --bar
Gibt es sowieso etwas zu überschreiben?
Antworten:
Ersetzen
mit
Beispielsweise,
quelle
parse_known_args
parser.parse_args(None)
eher alsparser.parse_args([])
in meinen Tests tat .parse_known_args
anstatt sie zu aktivieren. Ich finde, dass dies den Entwicklungs- und Testcode, den ich eventuell in ein aufgerufenes Skript migrieren möchte, erheblich unterstützt von einer Kommandozeile)parse_args
ArgumentParser
if __name__ == 'main':
True
Sie können die verbleibenden Teile in ein neues Argument einfügen,
parser.add_argument('args', nargs=argparse.REMAINDER)
wenn Sie sie verwenden möchten.quelle
parse_args()
und erfordert nichtparse_known_args()
(unter Python 2.7).Eigentlich "ignoriert" Argparse immer noch
_unrecognized_args
. Solange diese "nicht erkannten" Argumente nicht das Standardpräfix verwenden, werden Sie keine Beschwerden vom Parser hören.Verwenden Sie die Konfiguration von @ anutbu, jedoch mit dem Standard
parse.parse_args()
, wenn Sie unser Programm mit den folgenden Argumenten ausführen möchten .Wir werden diese Namespaced-Datenerfassung haben, mit der wir arbeiten können.
Wenn wir wollten, dass das Standardpräfix
-
ignoriert wird, können wir den ArgumentParser ändern und entscheiden, dass wir+
stattdessen ein für unsere "erkannten" Argumente verwenden.Der gleiche Befehl wird erzeugt
Steck das in deine Pfeife und rauche es =)
nJoy!
quelle