построение абсолютного пути с помощью os.path.join ()
Я хотел бы построить абсолютный путь в 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 = ??? # <--
print "MYPATH:", os.path.join(root, 'etc', 'init.d')
MYPATH: /etc/init.d
edit2: вопрос действительно сводится к: так как ведущий слэш в/etc/init.d
делает этот путь абсолютным путем, есть ли способ построить этот ведущий слэш программно? (Я не хочу делать предположения, что косая черта указывает на абсолютный путь)