Antworten:
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)
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
:
import os
print os.path.abspath('.')
Verwenden Sie os.path.isabs
.
import os.path
os.path.isabs('/home/user')
True
os.path.isabs('user')
False
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:
import ntpath
import posixpath
ntpath.isabs("Z:/a/b/c../../H/I/J.txt")
True
posixpath.isabs("Z:/a/b/c../../H/I/J.txt")
False
def path_is_abs(p): return (len(p) > 1) and (p[0] == '/' or p[1] == ':')
Von python 3.4
pathlib ist erhältlich.
In [1]: from pathlib import Path
In [2]: Path('..').is_absolute()
Out[2]: False
In [3]: Path('C:/').is_absolute()
Out[3]: True
In [4]: Path('..').resolve()
Out[4]: WindowsPath('C:/the/complete/path')
In [5]: Path('C:/').resolve()
Out[5]: WindowsPath('C:/')
Path('\tmp').is_absolute()
gibt richtig False
, während os.path.isabs('\tmp')
falsch gibt True
. (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 .)
os.path.isabs('c:\\')
False zurückgegeben.