Seite 1 von 1

glob Funktion auf Windows und Linux

Verfasst: Donnerstag 8. Januar 2009, 14:43
von pythonNoob
Hallo lieber Mitglieder!
Ich habe folgendes Problem:
Ich möchte eine Textdatei erstellen in der Pfadnamen von Pythondateien aufgelistet werden, die sich in einem lokalen Verzeichnis befinden.

Mit Hilfe der glob-funktion:

Code: Alles auswählen

glob("lib/test/*.py")
kriege ich eine Liste mit den unterschiedlichen Python dateien. Doch da ich unter Windows arbeite, erhalte ich eine Text datei, in der folgender Inhalt steht : z.B.

lib/test\\bespielPythonDatei.py
...

Da ich aber die txt Datei später auf einer Linux plattform benötige, will ich dass die Datei so aussieht:
lib/test/bespielPythonDatei.py

Weiss jemand wie ich das hinbekomme??
[/code]

Verfasst: Donnerstag 8. Januar 2009, 15:01
von cofi
Du ersetzt `\\' durch `/' ?

Code: Alles auswählen

In [6]: "lib/test\\bespielPythonDatei.py".replace("\\", "/")
Out[6]: 'lib/test/bespielPythonDatei.py'
Edit: Bzw auf der Liste:

Code: Alles auswählen

for index, path in enumerate(files):
    files[index] = path.replace("\\", "/")

Verfasst: Donnerstag 8. Januar 2009, 15:09
von Hyperion
Kann man das evtl. mit os.path.join() gerade biegen?

Verfasst: Donnerstag 8. Januar 2009, 15:19
von pythonNoob
Danke! Habe jetzt die replacement Variante genommen und funktioniert!

Verfasst: Donnerstag 8. Januar 2009, 16:23
von cofi
Hyperion hat geschrieben:Kann man das evtl. mit os.path.join() gerade biegen?
Hmm das müsste man dann allerdings erst splitten, damit man das durch die geeigneten Pfadtrenner ersetzen kann, das Problem dabei ist aber, dass der Aufruf

Code: Alles auswählen

In [2]: p = "lib/test\\bespielPythonDatei.py"
In [3]: os.path.split(p)
Out[3]: ('lib', 'test\\bespielPythonDatei.py')
Eben nicht entsprechendes unter Linux leistet. Unter Windows könnte man das aber evtl richtig hinbiegen per

Code: Alles auswählen

file_path = os.path.split(file_path)
file_path = "/".join(file_path)
os.path.join wird dagegen wieder - unter Windows - `\\' als Trennzeichen nutzen und is deswegen nicht zu gebrauchen.

Verfasst: Donnerstag 8. Januar 2009, 16:56
von lunar
Wenn es darum geht, Windows Pfade in Unix-Pfade zu verwandeln, wäre dieses Snippet meine Lösung.