Antworten:
os.path.isabsGibt zurück, Truewenn der Pfad absolut ist, Falsewenn 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 \tmpunter 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.