Відповіді:
os.path.isabs
повертається, True
якщо шлях абсолютний, False
якщо ні. Документація говорить, що вона працює у Windows (я можу підтвердити, що вона працює в Linux особисто).
os.path.isabs(my_path)
І якщо те, що ви насправді хочете, - це абсолютний шлях, не турбуйтеся перевіряти, чи є він, просто отримайте abspath
:
import os
print os.path.abspath('.')
Використовуйте os.path.isabs
.
import os.path
os.path.isabs('/home/user')
True
os.path.isabs('user')
False
Власне, я думаю, що жодна з вищезазначених відповідей не вирішила справжнього питання: крос-платформні шляхи. Що робить os.path, це завантажувати ОС залежною від версії бібліотеки "шлях". тому рішення полягає в тому, щоб явно завантажити відповідну бібліотеку шляху до ОС:
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] == ':')
Від python 3.4
pathlib доступний.
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()
дає правильно False
, а os.path.isabs('\tmp')
дає неправильно True
. (Дехто заперечує, що \tmp
це абсолютний шлях до Windows, але це справедливо лише для дуже марного визначення абсолютного шляху .)
os.path.isabs('c:\\')
повертається False.