Jalur absolut UNIX dimulai dengan '/', sedangkan Windows dimulai dengan alfabet 'C:' atau '\'. Apakah python memiliki fungsi standar untuk memeriksa apakah path absolut atau relatif?
142
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)
os.path.isabs('c:\\')
mengembalikan False.Dan jika apa yang benar-benar Anda inginkan adalah jalan absolut, jangan repot-repot memeriksa apakah itu benar, dapatkan saja
abspath
:sumber
Gunakan
os.path.isabs
.sumber
sumber
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:
sumber
def path_is_abs(p): return (len(p) > 1) and (p[0] == '/' or p[1] == ':')
Dari
python 3.4
pathlib tersedia.sumber
Path('\tmp').is_absolute()
memberi dengan benarFalse
, sementaraos.path.isabs('\tmp')
memberi secara tidak benarTrue
. (Beberapa orang akan berpendapat bahwa itu\tmp
adalah jalur absolut pada Windows, tetapi itu hanya berlaku untuk definisi jalur absolut yang sangat tidak berguna .)cara lain jika Anda tidak dalam direktori kerja saat ini, agak kotor tetapi berfungsi untuk saya.
sumber