Unix pathname expansion (Globbing) mit optparse nutzen
Verfasst: Mittwoch 4. August 2010, 16:41
Hallo!
Ich verwende Python 2.6.5 und damit noch optparse (depr. ich weiß).Nun habe ich einen Parameter "-i" für Inputfiles definiert. Da ich möchte, dass man mehrere Dateien angeben kann, ist als Aktion "append" gesetzt.
So weit so gut: Ich kann mehrere Eingabe Dateien übergeben:
Nun wollte ich in Ergänzung dazu gerne UPE nutzen und habe mir dafür das glob-Modul ausgesucht. Aber Pustekuchen: Die Shell expandiert Angaben wie
automatisch zu
. Hätte man ja mit rechnen können. Dummerweise kann OptParse derartige Angaben nicht verarbeiten: Das obige Beispiel mit dem Wildcard würde bei mir zu folgender Liste führen:
Nun wird die ganze Sache noch etwas komplizierter: Bei Langangaben (--input=*.dat statt -i *.dat), wird mir die Angabe unexpandiert übergeben! Ich habe mal in der Manpage des Globbings (unter Misc) nachgesehen: Da steht von diesem Verhalten nichts
Kurzum: Weiß jemand Rat? Ich kannte natürlich sagen: Eingabedateien mit UPE müssen in Anführungsstrichen stehen - dann lässt die Shell die Finger davon und ich kann das Ganze mit glob auswerten. Aber die Lösung ist ja nun nicht sonderlich kanonisch. Und lange Optionen finde ich jetzt auch nicht so toll.
Vielleicht kann mich ja jemand auf meinen Denkfehler bzw. eine schöne Lösung aufmerksam machen.
Danke schonmal!
brb
Ich verwende Python 2.6.5 und damit noch optparse (depr. ich weiß).Nun habe ich einen Parameter "-i" für Inputfiles definiert. Da ich möchte, dass man mehrere Dateien angeben kann, ist als Aktion "append" gesetzt.
So weit so gut: Ich kann mehrere Eingabe Dateien übergeben:
Code: Alles auswählen
./script.py -i datei.dat -i datei2.dat
Code: Alles auswählen
./script.py -i *.dat -i data.raw
Code: Alles auswählen
./script.py -i data.dat data1.dat -i data.raw
: Weil die Shell die Pfadangabe expandiert, liest OptParse nur die erste Angabe und hält die zweite Angabe für einen Parameter (und keine Option).["data.dat", "data.raw"]
Nun wird die ganze Sache noch etwas komplizierter: Bei Langangaben (--input=*.dat statt -i *.dat), wird mir die Angabe unexpandiert übergeben! Ich habe mal in der Manpage des Globbings (unter Misc) nachgesehen: Da steht von diesem Verhalten nichts
Kurzum: Weiß jemand Rat? Ich kannte natürlich sagen: Eingabedateien mit UPE müssen in Anführungsstrichen stehen - dann lässt die Shell die Finger davon und ich kann das Ganze mit glob auswerten. Aber die Lösung ist ja nun nicht sonderlich kanonisch. Und lange Optionen finde ich jetzt auch nicht so toll.
Vielleicht kann mich ja jemand auf meinen Denkfehler bzw. eine schöne Lösung aufmerksam machen.
Danke schonmal!
brb