construindo caminho absoluto com os.path.join ()
Eu gostaria de construir um caminho absoluto em python, enquanto ao mesmo tempo ficar bastante alheio a coisas como separador de caminho.
edit0: por exemplo, há um diretório na raiz do meu sistema de arquivos/etc/init.d
(ouC:\etc\init.d
no w32), e eu quero construir isso apenas a partir dos elementosetc
einit.d
(no w32, eu provavelmente também preciso de um ID de disco, comoC:
)
Para não ter que se preocupar com separadores de caminho,os.join.path()
é obviamente a ferramenta de escolha. Mas parece que isso só vai criarrelativo caminhos:
print "MYPATH:", os.path.join('etc', 'init.d')
MYPATH: etc/init.d
Adicionando um primeiro elemento fictício (por ex.''
) não ajuda em nada:
print "MYPATH:", os.path.join('', 'etc', 'init.d')
MYPATH: etc/init.d
Tornar o primeiro elemento absoluto obviamente ajuda, mas esse tipo de derrota a ideia de usaros.path.join()
print "MYPATH:", os.path.join('/etc', 'init.d')
MYPATH: /etc/init.d
edit1: usandoos.path.abspath()
tentará apenas converter um caminho relativo em um caminho absoluto. por exemplo. considere a execução do seguinte no diretório de trabalho/home/foo
:
print "MYPATH:", os.path.abspath(os.path.join('etc', 'init.d'))
MYPATH: /home/foo/etc/init.d
Então, qual é a maneira padrão de cruzar uma plataforma para "erradicar" um caminho?
root = ??? # <--
print "MYPATH:", os.path.join(root, 'etc', 'init.d')
MYPATH: /etc/init.d
edit2: a questão realmente se resume a: desde o primeiro corte em/etc/init.d
faz deste caminho um caminho absoluto, existe uma maneira de construir este slash de forma programática? (Eu não quero fazer suposições de que uma barra principal indique um caminho absoluto)