glob Funktion auf Windows und Linux

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pythonNoob
User
Beiträge: 6
Registriert: Donnerstag 8. Januar 2009, 14:35

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]
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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("\\", "/")
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Kann man das evtl. mit os.path.join() gerade biegen?
pythonNoob
User
Beiträge: 6
Registriert: Donnerstag 8. Januar 2009, 14:35

Danke! Habe jetzt die replacement Variante genommen und funktioniert!
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
lunar

Wenn es darum geht, Windows Pfade in Unix-Pfade zu verwandeln, wäre dieses Snippet meine Lösung.
Antworten