1050 Stimmen

Wie man einen absoluten Dateipfad in Python ermittelt

Bei einem Pfad wie dem folgenden "mydir/myfile.txt" Wie finde ich den absoluten Pfad der Datei relativ zum aktuellen Arbeitsverzeichnis in Python? Unter Windows könnte ich z. B. Folgendes erhalten:

"C:/example/cwd/mydir/myfile.txt"

1512voto

sherbang Punkte 14569
>>> import os
>>> os.path.abspath("mydir/myfile.txt")
'C:/example/cwd/mydir/myfile.txt'

Funktioniert auch, wenn es bereits ein absoluter Pfad ist:

>>> import os
>>> os.path.abspath("C:/example/cwd/mydir/myfile.txt")
'C:/example/cwd/mydir/myfile.txt'

136voto

twasbrillig Punkte 14254

Sie können die neue Python 3.4-Bibliothek verwenden pathlib . (Sie können es auch für Python 2.6 oder 2.7 bekommen, indem Sie pip install pathlib .) Die Autoren schrieb : "Das Ziel dieser Bibliothek ist es, eine einfache Hierarchie von Klassen zur Verfügung zu stellen, um Dateisystempfade und die üblichen Operationen, die Benutzer mit ihnen durchführen, zu behandeln."

Um einen absoluten Pfad in Windows zu erhalten:

>>> from pathlib import Path
>>> p = Path("pythonw.exe").resolve()
>>> p
WindowsPath('C:/Python27/pythonw.exe')
>>> str(p)
'C:\\Python27\\pythonw.exe'

Oder unter UNIX:

>>> from pathlib import Path
>>> p = Path("python3.4").resolve()
>>> p
PosixPath('/opt/python3/bin/python3.4')
>>> str(p)
'/opt/python3/bin/python3.4'

Die Dokumente sind hier: https://docs.python.org/3/library/pathlib.html

39voto

benjimin Punkte 2950
import os
os.path.abspath(os.path.expanduser(os.path.expandvars(PathNameString)))

Beachten Sie, dass expanduser ist (unter Unix) notwendig, wenn der angegebene Ausdruck für den Datei- (oder Verzeichnis-) Namen und den Speicherort ein führendes ~/ (die Tilde bezieht sich auf das Home-Verzeichnis des Benutzers), und expandvars kümmert sich um alle anderen Umgebungsvariablen (wie $HOME ).

31voto

Mad Physicist Punkte 93794

Aktualisierung für Python 3.4+ pathlib die die Frage tatsächlich beantwortet:

from pathlib import Path

relative = Path("mydir/myfile.txt")
absolute = relative.absolute()  # absolute is a Path object

Wenn Sie nur eine temporäre Zeichenkette benötigen, denken Sie daran, dass Sie mit Path Objekte mit allen relevanten Funktionen in os.path natürlich auch abspath :

from os.path import abspath

absolute = abspath(relative)  # absolute is a str object

30voto

Tom Punkte 39526

Installieren Sie einen Drittanbieter Pfadmodul (gefunden auf PyPI ), wickelt sie alle os.path Funktionen und andere verwandte Funktionen in Methoden für ein Objekt, das überall dort verwendet werden kann, wo Zeichenketten verwendet werden:

>>> from path import path
>>> path('mydir/myfile.txt').abspath()
'C:\\example\\cwd\\mydir\\myfile.txt'

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