Jawaban:
os.path.isabskembali Truejika path absolut, Falsejika tidak. Dokumentasi mengatakan itu bekerja di windows (saya dapat mengonfirmasi itu bekerja di Linux secara pribadi).
os.path.isabs(my_path)
Dan jika apa yang benar-benar Anda inginkan adalah jalan absolut, jangan repot-repot memeriksa apakah itu benar, dapatkan saja abspath:
import os
print os.path.abspath('.')
Gunakan os.path.isabs.
import os.path
os.path.isabs('/home/user')
True
os.path.isabs('user')
False
Sebenarnya saya pikir tidak ada jawaban di atas yang membahas masalah sebenarnya: jalur lintas platform. Apa yang dilakukan os.path adalah memuat versi tergantung perpustakaan dari 'path' library. jadi solusinya adalah memuat pustaka path (OS) yang relevan secara eksplisit:
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] == ':')
Dari python 3.4 pathlib tersedia.
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()memberi dengan benar False, sementara os.path.isabs('\tmp')memberi secara tidak benar True. (Beberapa orang akan berpendapat bahwa itu \tmpadalah jalur absolut pada Windows, tetapi itu hanya berlaku untuk definisi jalur absolut yang sangat tidak berguna .)
os.path.isabs('c:\\')mengembalikan False.