[Python-de] wildcard im pfadnamen

Georg Mischler schorsch at schorsch.com
Mit Nov 10 12:09:14 CET 2004


Achim Domma (Procoders) wrote:

> Johannes Krauth wrote:
>
> > die datei auf die ich einen pfad haben moechte,
> > ist eindeutig zu lokalisieren.
> > von system zu system variiert sie in genau
> > zwei buchstaben im pfadnamen.
> > diesen kann ich nun mit dem glob-modul flexibel halten.
> > also tut alles wunderbar ;-)
>
> Ich würde dafür trotzdem nicht glob verwenden. Wenn die Pfad wirklich
> nur in diesen zwei Buchstaben (ich gehe mal davon aus es handelt sich um
> ein Unterverzeichnis oder sowas) variiert, d.h. die Struktur der
> Änderung sehr wohl bekannt ist, dann würde ich das so im Code dokumentieren.
> Die Funktion kostet dich im schlimmsten Fall 'ne halbe Stunde oder auch
> Stunde, aber dafür macht sie genau das was du willst und zukünftige
> Programmierer sehen was passiert.
> Wird bei zukünftigen Änderungen dein glob doch zweideutig, wirst du
> warsch. sehr schwer nachvollziehbare Fehler bekommen.


Über diese Empfehlung würde ich nochmal gründlich nachdenken.

Eine eigene Funktion wird bei eventuell zukünftig auftauchenden
Mehrdeutigkeiten genau so scheitern wie glob.glob(), baut aber im
Gegensatz zu einem Standard-Modul zusätzliche Verständnis-Hürden
auf.

Ein vernünftig formuliertes glob-Muster (bei dem nur die beiden
Zeichen als Wildcards drin stehen) dokumentiert den Sachverhalt
sehr viel anschaulicher als eigene Code oder gar Kommentare es je
tun könnten. Schliesslich ist das beschriebene Problem ja die
explizite Aufgabe dieses Moduls.

Und noch ein Tipp für Johannes (falls du nicht selber schon
darauf gekommen bist): glob.glob() liefert ja eine Liste von
Dateipfaden zurück. Lass dein Programm einfach eine Warnung
ausgeben, falls diese Liste jemals mehr als ein Element enthalten
sollte. Damit bleiben sowohl für die Benutzer wie auch für
nachfolgende Generationen von Entwicklern keinerlei Fragen mehr
offen.


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/