12 Stimmen

Os.getcwd() für ein anderes Laufwerk unter Windows

Laut http://docs.python.org/library/os.path.html

"Auf Windows gibt es ein aktuelles Verzeichnis für jedes Laufwerk"

Dies bereitet mir Probleme, wenn ich os.getcwd() unter Windows verwende.

Ich verwende Python 2.7 auf meinem Laufwerk C, um ein Skript auf dem freigegebenen Netzlaufwerk F zu starten. Dennoch gibt os.getcwd() innerhalb dieses Skripts ein Verzeichnis auf meinem Laufwerk C zurück.

Gibt es etwas, was ich tun kann, um das Arbeitsverzeichnis für mein Laufwerk F zu erhalten?

6voto

Ethan Furman Punkte 57238

Eigentlich hängt es davon ab:

Wenn Python direkt gestartet wird (ohne über cmd.exe zu gehen), dann ja, haben Sie nur das aktuelle Verzeichnis (es ist wie immer cd /d ... anzugeben):

--> import os
--> os.getcwd()
'c:\\source\\dbf-dev'
--> os.chdir('z:')
--> os.getcwd()
'Z:\\'
--> os.chdir('c:')    # nimmt das Stammverzeichnis an
--> os.getcwd()
'C:\\'

Aber wenn Sie Python von cmd.exe starten, bekommen Sie die historische Perspektive:

>>> import os
>>> os.getcwd()
'Z:\\perm-c'
>>> os.chdir('c:')    # nimmt nicht das Stammverzeichnis an
>>> os.getcwd()
'C:\\Source\\Path'
>>> os.chdir('d:')
>>> os.getcwd()
'D:\\'
>>> os.chdir('l:')
>>> os.getcwd()
'L:\\'
>>> os.chdir('l:\\letter')
>>> os.getcwd()
'l:\\letter'
>>> os.chdir('z:')
>>> os.getcwd()
'Z:\\perm-c'
>>> os.chdir('l:\\')
>>> os.getcwd()
'l:\\'

Zweifellos handelt es sich hierbei um ein Artefakt von cmd.exe, das im Hintergrund aktiv ist.

Um Ihre ursprüngliche Frage zu beantworten - der einzige Weg, das aktuelle Verzeichnis auf Laufwerk f: herauszufinden, ist

  • 1) Python von cmd.exe aus gestartet zu haben
  • 2) mit os.chdir() zu 'f:' zu wechseln
  • 3) os.getcwd()
  • 4) zurückzukehren (falls gewünscht)

2voto

David Heffernan Punkte 585606

Dies ist tatsächlich falsch. Jeder Prozess hat ein einzelnes Arbeitsverzeichnis. Es gibt kein separates Arbeitsverzeichnis für verschiedene Laufwerke.

Zur historischen Perspektive lesen Sie diesen Artikel von Raymond Chen.

-1voto

TorelTwiddler Punkte 5858

Ich glaube, dass der Abschnitt, den Sie gerade lesen, schlecht formuliert ist. Es gibt nur ein aktuelles Arbeitsverzeichnis für Ihre Python-Sitzung, und Sie erhalten es von os.getcwd(). Sie können os.chdir(r'F:\') verwenden, um das Verzeichnis zu Ihrem F-Laufwerk zu ändern.

Der Teil, auf den sich das Zitat bezieht, bezieht sich auf die Methode os.path.join. Es bedeutet, dass wenn Sie anstelle von r'C:\' ein erstes Argument von 'C:' übergeben, erhalten Sie den falschen Pfad (nämlich C:path anstelle von C:\\path).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X