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