Python unter Windows

Es ist einfach nur ein Schmerz im Arsch. Windoof hat die lästige Angewohnheit \ als Trennzeichen von Pfadelementen zu verwenden. Also zwischen Ordnernamen und Dateien.

Das \ ist allerdings gleichzeitig und “überall” auf der Welt ein Sonderzeichen um innerhalb von Zeichenketten (strings) Zeichenfolgen mit spezieller Bedeutung zu codieren.

Typische Beispiele dafür sind

  • \n newline
  • \t tab

Wenn ich jetzt also, wie sonst auch immer, in meinem python script os.path.join verwende, klappt das alles Prima.

Genauso funktioniert es, das python script aus einer powershell heraus aufzurufen. Das Problem entsteht unter Windows sobald ich diesen Pfad anderweitig verwende.

Im Detail, hatte ich den Fall, einen Pfad zu einem Ordner mit der Angabe vom Laufwerk (C:\\Ordner1\\Ordner2\\) aus einem C# Programm an mein python script übergeben zu müssen.

Hier hatte ich zusätzlich noch das Problem der Übergabe des Pfads aus einer Variable.

Die Alternativen aus den weiten des Internets waren dabei:

  • Pfadelemente einzeln übergeben
  • im Code das magische @ verwenden, welches allerdings auch wieder nicht alles as is übergibt
  • alles noch einmal mit ein bis drei " “umwickeln”
  • einfach / verwenden, Windows versteht das schließlich auch

Die letzte Alternative schien mir dabei als am wenigsten gehackt. Richtig kommentiert, warum ich an dieser Stelle nicht Path.Combine verwende, erinnere ich mich in der Zukunft hoffentlich daran, dies nicht einfach so zu ändern. Auf jeden Fall steht schon ein neuer Punkt auf meiner ToDo: Ein ordentliches Testszenario für diesen case aufbauen und die verschiedenen Konstellationen ausprobieren.

Trotzdem bin ich immer noch nicht ganz überzeugt, wozu zum Teufel ich dann im Betriebssystem “einheitliche” Schnittstellen schaffe, wenn diese dann nicht einheitlich sind.