Ich möchte einige Optionen im argparse-Modul haben, z. B. --pm-exportwenn ich versuche, es zu verwenden, args.pm-exporterhalte ich den Fehler, dass es kein Attribut gibt pm. Wie kann ich dieses Problem umgehen? Ist es möglich, -Optionen in der Befehlszeile zu haben?
Bei optionalen Argumentaktionen wird der Wert von dest normalerweise aus den Optionszeichenfolgen abgeleitet. ArgumentParser generiert den Wert von dest, indem die erste lange Optionszeichenfolge verwendet und die ursprüngliche --Zeichenfolge entfernt wird . Alle internen -Zeichen werden in _Zeichen konvertiert, um sicherzustellen, dass die Zeichenfolge ein gültiger Attributname ist
Der relevante Python-Fehlerbericht: bugs.python.org/issue15125 . argparseverwendet setattrund getattr, daher müssen destNamen keine gültigen dotAttributnamen sein. Der Benutzer kann auch verwenden getattr.
hpaulj
5
Ich würde es einfach tunpositional_arg = getattr( parser, 'positional-arg' )
Ciro Santilli 5 冠状 病 病 事件 5
1
Genau das, was ich brauchte - ich habe es rückwärts gemacht metavarund konnte nicht herausfinden, warum es nicht funktionierte. Vielen Dank!
argparse
verwendetsetattr
undgetattr
, daher müssendest
Namen keine gültigendot
Attributnamen sein. Der Benutzer kann auch verwendengetattr
.positional_arg = getattr( parser, 'positional-arg' )
metavar
und konnte nicht herausfinden, warum es nicht funktionierte. Vielen Dank!Striche werden in Unterstriche umgewandelt:
quelle