Как проверить, является ли путь абсолютным путем или относительным путем кросс-платформенным способом с помощью Python?

Абсолютный путь UNIX начинается с '/', тогда как Windows начинается с алфавита 'C:' или '\'. У python есть стандартная функция, чтобы проверить, является ли путь абсолютным или относительным?

Ответ 1

os.path.isabs возвращает True, если путь является абсолютным, False, если нет. Документация говорит, что она работает в Windows (я могу подтвердить, что она работает в Linux лично).

os.path.isabs(my_path)

Ответ 2

И если то, что вы действительно хотите, это абсолютный путь, не утруждайте себя проверкой, если это так, просто введите abspath:

import os

print os.path.abspath('.')

Ответ 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)