Я хотел бы построить абсолютный путь в python, и в то же время оставаясь не обращая внимания на такие вещи, как разделитель путей.
edit0:, например, есть каталог в корне моей файловой системы /etc/init.d
(или C:\etc\init.d
на w32), и я хочу построить это только из элементов etc
и init.d
(на w32, вероятно, мне также нужен идентификатор диска, например C:
)
Чтобы не беспокоиться о разделителях путей, os.join.path()
, очевидно, является инструментом выбора. Но кажется, что это только создаст относительные пути:
print "MYPATH:", os.path.join('etc', 'init.d')
MYPATH: etc/init.d
Добавление фиктивного первого элемента (например, ''
) ничего не помогает:
print "MYPATH:", os.path.join('', 'etc', 'init.d')
MYPATH: etc/init.d
Создание первого элемента абсолютно очевидно помогает, но этот вид побеждает идею использования os.path.join()
print "MYPATH:", os.path.join('/etc', 'init.d')
MYPATH: /etc/init.d
edit1: с помощью os.path.abspath()
будет пытаться преобразовать относительный путь в абсолютный путь.
например запустите в рабочем каталоге /home/foo
следующее:
print "MYPATH:", os.path.abspath(os.path.join('etc', 'init.d'))
MYPATH: /home/foo/etc/init.d
Итак, каков стандартный кросс-платформенный способ "root" пути?
root = ??? # <--
print "MYPATH:", os.path.join(root, 'etc', 'init.d')
MYPATH: /etc/init.d
edit2: вопрос действительно сводится к следующему: поскольку конечная косая черта в /etc/init.d
делает этот путь абсолютным путем, существует ли способ создать эту конечную косую черту программно?
(Я не хочу делать предположения, что конечная косая черта указывает абсолютный путь)