Pythons os.listdir Verhalten unter Windows

8
%Vor%

Warum beeinflusst das "/" nach "c:" das Ergebnis? Gibt es eine Möglichkeit, os.listdir('c:') den Inhalt von "c: /" zurückzugeben?

    
D K 31.08.2011, 15:01
quelle

2 Antworten

21

Ich denke nicht, dass das spezifisch für Python ist, es ist eine Windows-Frage im Herzen.

In Windows C: und C:\ (oder alternativ C:/ ) haben unterschiedliche Bedeutungen:

  • C: bezieht sich auf das aktuelle Verzeichnis auf dem Laufwerk C:
  • C:\ (und C:/ ) bezieht sich auf das Stammverzeichnis des Laufwerks C:

Während UNIX-ähnliche Betriebssysteme einfach ein "aktuelles Verzeichnis" haben, hat Windows zwei verschiedene Begriffe:

  • das aktuelle Laufwerk und
  • das aktuelle Verzeichnis pro Laufwerk

So könnte das aktuelle Laufwerk D: sein, das aktuelle Verzeichnis auf C: könnte \Windows sein (effektiv C:\Windows ) und das aktuelle Verzeichnis auf D: könnte \Data sein (effektiv D:\Data ) . In diesem Szenario würde die Auflösung wie folgt funktionieren:

  • . würde sich auf D:\Data beziehen
  • \ würde sich auf D:\ beziehen
  • C: würde sich auf C:\Windows beziehen
  • C:\Foo würde sich auf C:\Foo beziehen

Wenn Sie also Informationen zu einem spezifischen -Verzeichnis haben möchten, sollten Sie immer einen vollständigen Pfad einschließlich eines Laufwerks und eines Verzeichnisses verwenden B. C:\ .

    
Joachim Sauer 31.08.2011, 15:03
quelle
3

C: verwendet das aktuelle Arbeitsverzeichnis auf Laufwerk C:

C: / wird nach C: \ übersetzt und verwendet das Stammverzeichnis auf Laufwerk C:

  

Gibt es eine Möglichkeit, os.listdir ('c:') den Inhalt von "c: /" zurückzugeben?

Nein.

Sie können jedoch Verzeichnisse wechseln. Aber das kann für die Benutzer verwirrend sein.

    
S.Lott 31.08.2011 15:04
quelle