Câu trả lời:
os.path.isabs
trả về True
nếu đường dẫn là tuyệt đối, False
nếu không. Tài liệu nói rằng nó hoạt động trong các cửa sổ (tôi có thể xác nhận nó hoạt động trong Linux cá nhân).
os.path.isabs(my_path)
Và nếu những gì bạn thực sự muốn là con đường tuyệt đối, đừng bận tâm kiểm tra xem nó có phải không, chỉ cần lấy abspath
:
import os
print os.path.abspath('.')
Sử dụng os.path.isabs
.
import os.path
os.path.isabs('/home/user')
True
os.path.isabs('user')
False
Trên thực tế tôi nghĩ rằng không có câu trả lời nào ở trên giải quyết được vấn đề thực sự: các đường dẫn đa nền tảng. Những gì os.path làm là tải phiên bản phụ thuộc hệ điều hành của thư viện 'path'. Vì vậy, giải pháp là tải rõ ràng thư viện đường dẫn (HĐH) có liên quan:
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] == ':')
Từ python 3.4
pathlib có sẵn.
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()
đưa ra chính xác False
, trong khi os.path.isabs('\tmp')
đưa ra không chính xác True
. (Một số người sẽ cho rằng đó \tmp
là một đường dẫn tuyệt đối trên Windows, nhưng điều đó chỉ đúng với định nghĩa rất vô dụng về một đường dẫn tuyệt đối .)
os.path.isabs('c:\\')
trả về Sai.