python - Mit argparse, übergeben Sie einen beliebigen string als argument eingesetzt werden, um im Skript

Wie definiere ich einen beliebigen string als optionales argument mit argparse?

Beispiel:

[user@host]$ ./script.py FOOBAR -a -b
Running "script.py"...
You set the option "-a"
You set the option "-b"
You passed the string "FOOBAR"

Im Idealfall würde ich gerne die position der Argumente keine Rolle. ich.e:

./script.py -a FOOBAR -b == ./script.py -a -b FOOBAR == ./script.py FOOBAR -a -b


In der BASH kann ich dies erreichen während der Verwendung getopts. Nach Abwicklung aller gewünschten Schalter in einer case-Schleife, würde ich eine Zeile, die liest shift $((OPTIND-1)), und von dort aus habe ich Zugriff auf alle restlichen Argumente unter Verwendung der standard -$1, $2, $3 usw...


Macht etwas, dass exisit für argparse?

  • Haben Sie gehen Sie durch die argparse tutorial? Alles, was Sie beschreiben, ist es
  • Das einzige Teil, das nicht diskutiert, wenn ich mich Recht erinnere ist die nargs="*" Verhalten (so dass eine positions-argument greifen kann, alle restlichen Argumente)
  • Die heikle Sache ist, dass wenn Sie nur parse_args, sobald es sieht, ein "positions" - argument, es hört auf zu suchen, für die anderen Argumente und sammelt die Argumente, die von der positions-argument am Ende. Diese Ordnung ist in den meisten Fällen, aber brechen würde seinen 1. und 3. Beispiel.
  • Auch dieser übergebene string optional sein sollte. Wenn ich ein Vanille - add_argument("word") es obligatorisch wird.
  • Es sieht aus wie argparse nicht nativ verarbeiten optional beliebige Argumente. Mit @jedwards Antwort, die ich bekommen kann die gewünschte Funktionalität außer, dass beliebige Zeichenfolge unbekannt ist argparse, also die Fähigkeit, eine beliebige Zeichenfolge unbekannt ist Benutzer aufrufen die help dialog.
InformationsquelleAutor svenglar | 2013-06-18
Schreibe einen Kommentar