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
os.listdir und Symlinks unter Windows 7
-
- User
- Beiträge: 42
- Registriert: Montag 8. November 2010, 15:25
- Wohnort: Braunschweig
- Kontaktdaten:
Zuletzt geändert von ulrich1992 am Dienstag 23. August 2011, 19:01, insgesamt 2-mal geändert.
Mal so ins Blaue: Was gibt os.getcwd()? U. U. reicht das als Hinweis.
-
- User
- Beiträge: 42
- Registriert: Montag 8. November 2010, 15:25
- Wohnort: Braunschweig
- Kontaktdaten:
C:\users\ulrichCM hat geschrieben:Mal so ins Blaue: Was gibt os.getcwd()? U. U. reicht das als Hinweis.
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?
-
- User
- Beiträge: 42
- Registriert: Montag 8. November 2010, 15:25
- Wohnort: Braunschweig
- Kontaktdaten:
Früher hieß der Ordner "Eigene Musik" heute heißt es "music".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?
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
@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.
-
- User
- Beiträge: 42
- Registriert: Montag 8. November 2010, 15:25
- Wohnort: Braunschweig
- Kontaktdaten:
Sind denn dann diese Aliase für Standardordner unter Windows 7 keine Symlinks?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.
Wie nennt man denn dann dieses Windows-"Feature" Umleitung von Pfaden aus alten Windowsprogrammen zwecks Kompatiblität und wie kann ich das umgehen?
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 ... das ist leider nicht so einfach