Абсолютный путь UNIX начинается с '/', тогда как Windows начинается с алфавита 'C:' или '\'. У python есть стандартная функция, чтобы проверить, является ли путь абсолютным или относительным?
Как проверить, является ли путь абсолютным путем или относительным путем кросс-платформенным способом с помощью Python?
Ответ 1
os.path.isabs
возвращает True
, если путь является абсолютным, False
, если нет. Документация говорит, что она работает в Windows (я могу подтвердить, что она работает в Linux лично).
os.path.isabs(my_path)
Ответ 2
И если то, что вы действительно хотите, это абсолютный путь, не утруждайте себя проверкой, если это так, просто введите abspath
:
import os
print os.path.abspath('.')
Ответ 3
Используйте os.path.isabs
.
Ответ 4
import os.path
os.path.isabs('\home\user')
True
os.path.isabs('user')
False
Ответ 5
В модуле os.path
будет все, что вам нужно.
Ответ 6
На самом деле, я думаю, что ни один из вышеперечисленных ответов не рассматривал реальную проблему: кросс-платформенные пути. Что такое os.path, это загрузить зависимую от ОС версию библиотеки "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
Ответ 7
другой способ, если вы не находитесь в текущем рабочем каталоге, вроде бы грязный, но он работает для меня.
import re
path = 'my/relative/path'
# path = '..my/relative/path'
# path = './my/relative/path'
pattern = r'([a-zA-Z0-9]|[.])+/'
is_ralative = bool(pattern)