os.listdir und Symlinks unter Windows 7

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
ulrich1992
User
Beiträge: 42
Registriert: Montag 8. November 2010, 15:25
Wohnort: Braunschweig
Kontaktdaten:

Ich entwickel als Lernobjekt für wxPython einen Dateimanager.
Ab Windows Vista wurden Symlinks endlich auch unter Windows eingeführt.

Python 2.7 kann damit aber scheinbar noch nicht umgehen.

os.listdir(r"c:\users\ulrich") gibt mir beispielsweise die Ordner
Eigene Musik
My Music
Music

Selbes für Programme und Program Files, Dokumente und Einstellungen, Users and Settings.

Wenn ich nun os.chdir(r"c:\users\ulrich\Eigene Musik") mache kriege ich einen WindowsError - Das System kann die angegebene Datei nicht finden.

os.chdir(r"c:\users\ulrich\music")#geht
Zuletzt geändert von ulrich1992 am Dienstag 23. August 2011, 19:01, insgesamt 2-mal geändert.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Mal so ins Blaue: Was gibt os.getcwd()? U. U. reicht das als Hinweis.
ulrich1992
User
Beiträge: 42
Registriert: Montag 8. November 2010, 15:25
Wohnort: Braunschweig
Kontaktdaten:

CM hat geschrieben:Mal so ins Blaue: Was gibt os.getcwd()? U. U. reicht das als Hinweis.
C:\users\ulrich
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Sorry, dann habe ich wohl zu einfach gedacht. Aber was hat denn der Ordner "music" mit "Eigene Musik" oder "Music" zu tun? Der Threadtitel verrät, daß das etwas mit Links zu tun hat. Verrätst Du uns, was Du gemacht hast?
ulrich1992
User
Beiträge: 42
Registriert: Montag 8. November 2010, 15:25
Wohnort: Braunschweig
Kontaktdaten:

CM hat geschrieben:Sorry, dann habe ich wohl zu einfach gedacht. Aber was hat denn der Ordner "music" mit "Eigene Musik" oder "Music" zu tun? Der Threadtitel verrät, daß das etwas mit Links zu tun hat. Verrätst Du uns, was Du gemacht hast?
Früher hieß der Ordner "Eigene Musik" heute heißt es "music".
Windows 7 biegt die Pfade zu Kompatiblitätszwecken um.

Code: Alles auswählen

import os
os.chdir(r"c:\users\ulrich")

# Zeigt sowohl "music" als auch "Eigene Musik" und "my Music"
for file in os.listdir(".")
     print file

os.chdir("music")# geht

# Wieder zurück
os.chdir(r"c:\users\ulrich")

os.chdir("Eigene Musik")# geht nicht

BlackJack

@ulrich1992: Python muss mit Symlinks nicht umgehen können, denn wenn das wirklich Symlinks sind, dann ist das Aufgabe des Betriebssystems die aufzulösen. Python enthält auch unter Linux keinen besonderen Quelltext um zum Beispiel in ein Verzeichnis zu wechseln wenn der Name dafür kein reguläres Verzeichnis, sondern einen Symlink darstellt. Das funktioniert einfach.
ulrich1992
User
Beiträge: 42
Registriert: Montag 8. November 2010, 15:25
Wohnort: Braunschweig
Kontaktdaten:

BlackJack hat geschrieben:@ulrich1992: Python muss mit Symlinks nicht umgehen können, denn wenn das wirklich Symlinks sind, dann ist das Aufgabe des Betriebssystems die aufzulösen. Python enthält auch unter Linux keinen besonderen Quelltext um zum Beispiel in ein Verzeichnis zu wechseln wenn der Name dafür kein reguläres Verzeichnis, sondern einen Symlink darstellt. Das funktioniert einfach.
Sind denn dann diese Aliase für Standardordner unter Windows 7 keine Symlinks?
Wie nennt man denn dann dieses Windows-"Feature" Umleitung von Pfaden aus alten Windowsprogrammen zwecks Kompatiblität und wie kann ich das umgehen?
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Das ist afaik eine Anzeigesache im Explorer, die über die desktop.ini geregelt wird, siehe LocalizedResourceName Direktive. Also dass der Ordner \Eigene Dateien tatsächlich \documents heisst. Andere Sachen werden in der Tat über Symlinks geregelt, ob in Windows 7 noch NTFS Junctions eingesetzt werden, weiss ich nicht. Und Hardlinks gibt es auch ... :D das ist leider nicht so einfach
Antworten