Der absolute UNIX-Pfad beginnt mit '/', während Windows mit dem Alphabet 'C:' oder '\' beginnt. Hat Python eine Standardfunktion, um zu überprüfen, ob ein Pfad absolut oder relativ ist?
142
os.path.isabs
Gibt zurück, True
wenn der Pfad absolut ist, False
wenn nicht. Die Dokumentation besagt, dass es unter Windows funktioniert (ich kann bestätigen, dass es unter Linux persönlich funktioniert).
os.path.isabs(my_path)
os.path.isabs('c:\\')
False zurückgegeben.Und wenn das, was Sie wirklich wollen , ist der absolute Pfad, nicht die Mühe zu überprüfen, ob es ist, erhalten nur die
abspath
:quelle
Verwenden Sie
os.path.isabs
.quelle
quelle
Eigentlich denke ich, dass keine der oben genannten Antworten das eigentliche Problem angesprochen hat: plattformübergreifende Pfade. Os.path lädt die betriebssystemabhängige Version der 'path'-Bibliothek. Die Lösung besteht also darin, die relevante Pfadbibliothek (OS) explizit zu laden:
quelle
def path_is_abs(p): return (len(p) > 1) and (p[0] == '/' or p[1] == ':')
Von
python 3.4
pathlib ist erhältlich.quelle
Path('\tmp').is_absolute()
gibt richtigFalse
, währendos.path.isabs('\tmp')
falsch gibtTrue
. (Einige würden argumentieren, dass dies\tmp
unter Windows ein absoluter Pfad ist, aber das gilt nur für eine sehr nutzlose Definition eines absoluten Pfads .)Ein anderer Weg, wenn Sie nicht im aktuellen Arbeitsverzeichnis sind, ein bisschen schmutzig, aber es funktioniert für mich.
quelle