Wie erhalte ich den aktuellen Dateipfad des aktuellen Verzeichnisses? Ich habe es versucht:
>>> os.path.abspath(__file__)
'C:\\python27\\test.py'
Aber ich möchte:
'C:\\python27\\'
Wie erhalte ich den aktuellen Dateipfad des aktuellen Verzeichnisses? Ich habe es versucht:
>>> os.path.abspath(__file__)
'C:\\python27\\test.py'
Aber ich möchte:
'C:\\python27\\'
Die spezielle Variable __file__
enthält den Pfad zur aktuellen Datei. Davon können wir das Verzeichnis mithilfe von entweder pathlib
oder dem os.path
-Modul erhalten.
Für das Verzeichnis des ausgeführten Skripts:
import pathlib
pathlib.Path(__file__).parent.resolve()
Für das aktuelle Arbeitsverzeichnis:
import pathlib
pathlib.Path().resolve()
Für das Verzeichnis des ausgeführten Skripts:
import os
os.path.dirname(os.path.abspath(__file__))
Wenn du das aktuelle Arbeitsverzeichnis meinst:
import os
os.path.abspath(os.getcwd())
Beachte, dass vor und nach file
zwei Unterstriche stehen, nicht nur einer.
Beachte auch, dass wenn du interaktiv arbeitest oder Code aus etwas anderem als einer Datei geladen hast (z.B. einer Datenbank oder einer Online-Ressource), __file__
möglicherweise nicht gesetzt ist, da es kein Konzept von "aktueller Datei" gibt. Die obige Antwort geht vom häufigsten Szenario aus, dass ein Python-Skript, das sich in einer Datei befindet, ausgeführt wird.
Die Verwendung von Path
aus pathlib
ist der empfohlene Weg seit Python 3:
from pathlib import Path
print("Datei Pfad:", Path(__file__).absolute())
print("Verzeichnis Pfad:", Path().absolute()) # Verzeichnis des aktuellen Arbeitsverzeichnisses, nicht __file__
Hinweis: Wenn Jupyter Notebook verwendet wird, gibt __file__
nicht den erwarteten Wert zurück, daher muss Path().absolute()
verwendet werden.
In Python 3.x mache ich das:
from pathlib import Path
path = Path(__file__).parent.absolute()
Erklärung:
Path(__file__)
ist der Pfad zur aktuellen Datei..parent
gibt Ihnen das Verzeichnis, in dem sich die Datei befindet..absolute()
gibt Ihnen den vollen absoluten Pfad dazu.Die Verwendung von pathlib
ist der moderne Weg, um mit Pfaden zu arbeiten. Wenn Sie ihn später aus irgendeinem Grund als Zeichenfolge benötigen, tun Sie einfach str(path)
.
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.