Ich verwende Python argparse
, um Befehlszeilenbindungen für beliebte Funktionen von meiner Software zu erstellen. Genauer gesagt spreche ich über this function.Bestanden Bash Dateiliste zu Python-CLI-Funktion
Normalerweise, wenn ich eine CLI-Funktion eine Liste der Eingänge in bash nehmen will, kann ich so etwas wie:
whateverfunction DSC_4{322..399}*
, das die Funktion alle Werte von DSC_4322
zu DSC_4399
mit dem, was Suffixe passiert. Nun obvioulsy, wird dies nicht funktionieren, wenn ich gerade einen Stich mit argparse
Bedeutung vorbei den Weg in Python zu kriechen:
parser.add_argument("destination", help="Path to store files into (excluding alphanumeric storage directories)", type=str)
Gibt es eine elegante Art und Weise eines argparse
Positions Argument zu ermöglichen, bietet einen Weg und eine zu handhaben Liste der Dateien?
Das einzige, was mir einfällt, ist das Erkennen der Auszeichnungen in der Zeichenfolge und das Schreiben eines Python-Skripts, das eine Liste für eine solche Eingabe generiert - und einen Baum-Crawl für jede andere Art von Eingabe durchführt ... Aber ich hatte gehofft es könnte einen schöneren Weg geben.
Suchen Sie 'nargs = '+''? – zondo
'nargs = '+' ist der richtige Weg, wenn die Shell die Dateinamen für Sie erweitern soll. Wenn Sie möchten, dass Python die Erweiterung ausführt, müssen Sie die Spezifikation in Anführungszeichen setzen ('whatefunction' DCS_4 {322..399} *'), damit die Shell die Spezifikation übergibt. – tdelaney
'argparse' behandelt, was Sie ihm geben Die "sys.argv" -Liste. – hpaulj