Jawaban:
os.path.isabs
kembali True
jika path absolut, False
jika 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 \tmp
adalah jalur absolut pada Windows, tetapi itu hanya berlaku untuk definisi jalur absolut yang sangat tidak berguna .)
os.path.isabs('c:\\')
mengembalikan False.