построение абсолютного пути с помощью 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 делает этот путь абсолютным путем, есть ли способ конструировать эту начальную косую черту программно? (Я не хочу делать предположения, что косая черта указывает на абсолютный путь)

42
задан Caitlin Quintero Weaver 23 February 2018 в 00:23
поделиться