it-swarm.com.de

Wie erhalte ich das aktuelle Arbeitsverzeichnis mit python 3?

Wenn ich das folgende Skript in IDLE ausführe

import os
print(os.getcwd())

Ich bekomme die Ausgabe als

D:\testtool

aber wenn ich von cmd Prompt aus laufe, bekomme ich

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

Wie bekomme ich dasselbe Ergebnis, das ich mit IDLE erhalten habe?

47
Shriram

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

Um das aktuelle Arbeitsverzeichnis auf das zu ändern, das Ihr Skript enthält, können Sie Folgendes verwenden:

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

Die Variable __file__ Ist nur verfügbar, wenn Sie ein Skript aus einer Datei ausführen. Sie enthält den Pfad zur Datei. Mehr dazu hier: Python __file__ Attribut absolut oder relativ?

75
Maciek

Mit pathlib können Sie den Ordner ermitteln, in dem sich die aktuelle Datei befindet. __file__ ist der Pfadname der Datei, aus der das Modul geladen wurde. Ref: docs

import pathlib

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

Doc Ref: Link

4
butsyk