1272 Stimmen

Wie erhalte ich den vollständigen Pfad des aktuellen Verzeichnisses der Datei?

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\\'

2416voto

Bryan Oakley Punkte 337213

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.

Python 3

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()

Python 2 und 3

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.

Referenzen

  1. pathlib in der Python-Dokumentation.
  2. os.path - Python 2.7, os.path - Python 3
  3. os.getcwd - Python 2.7, os.getcwd - Python 3
  4. was bedeutet die Variable __file__?

157voto

Ron Kalian Punkte 2614

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.

89voto

Arminius Punkte 1821

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).

16voto

Akshaya Natarajan Punkte 1605

Versuche das:

import os
dir_path = os.path.dirname(os.path.realpath(__file__))

15voto

chefsmart Punkte 6668
import os
print(os.path.dirname(__file__))

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