2013-06-28 9 views
21

Wenn ich das folgende Skript in IDLE laufenWie bekomme ich das aktuelle Arbeitsverzeichnis mit Python 3?

import os 
print(os.getcwd()) 

ich Ausgabe als

D:\testtool 

aber wenn ich von cmd Aufforderung laufen lasse, erhalte ich

c:\Python33>python D:\testtool\current_dir.py 
c:\Python33 

Wie kann ich gleiche bekommen Ergebnis, das ich mit IDLE bekommen habe?

Antwort

30

Es scheint, dass IDLE sein aktuelles Arbeitsverzeichnis an den Speicherort des ausgeführten Skripts ändert, während es beim Ausführen des Skripts mit cmd das nicht tut und CWD unverändert lässt.

Um aktuelle Arbeitsverzeichnis auf das Skript Sie verwenden können, die ein ändern:

import os 
os.chdir(os.path.dirname(__file__)) 
print(os.getcwd()) 

Die __file__ Variable ist nur verfügbar, wenn Sie Skript aus einer Datei ausführen, und es enthält Pfad zur Datei. hier es: Python __file__ attribute absolute or relative?

3
import pathlib 

current_dir = pathlib.Path(__file__).parent 
current_file = pathlib.Path(__file__) 

Doc Ref: link

+1

eine richtige Beschreibung zu Ihrer Antwort geben –