Odpowiedzi:
os.path.isabs
zwraca, True
jeśli ścieżka jest bezwzględna, False
jeśli nie. Dokumentacja mówi, że działa w systemie Windows (osobiście mogę potwierdzić, że działa w systemie Linux).
os.path.isabs(my_path)
A jeśli naprawdę chcesz ścieżkę absolutną, nie przejmuj się sprawdzaniem, czy tak jest, po prostu pobierz abspath
:
import os
print os.path.abspath('.')
Użyj os.path.isabs
.
import os.path
os.path.isabs('/home/user')
True
os.path.isabs('user')
False
Właściwie myślę, że żadna z powyższych odpowiedzi nie dotyczyła prawdziwego problemu: ścieżek międzyplatformowych. To, co robi os.path, to załadowanie zależnej od systemu operacyjnego wersji biblioteki „path”. więc rozwiązaniem jest jawne załadowanie odpowiedniej biblioteki ścieżek (systemu operacyjnego):
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] == ':')
Z python 3.4
pathlib jest dostępne.
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()
daje poprawnie False
, a os.path.isabs('\tmp')
podaje niepoprawnie True
. (Niektórzy twierdzą, że \tmp
jest to ścieżka absolutna w systemie Windows, ale dotyczy to tylko bardzo bezużytecznej definicji ścieżki absolutnej .)
os.path.isabs('c:\\')
zwraca False.