Como obter o separador de variáveis ​​de ambiente PATH em Python?

156

Quando vários diretórios precisam ser concatenados, como em um caminho de pesquisa executável, existe um caractere separador dependente do sistema operacional. Para Windows é ';', para Linux é ':'. Existe uma maneira no Python de obter qual caractere dividir?

Nas discussões para esta pergunta Como descubro meu caminho python usando python? , sugere-se que os.sepo faça. Essa resposta está errada, pois é o separador para componentes de um diretório ou nome de arquivo e equivale a '\\'ou '/'.

Mark Ransom
fonte

Respostas:

220

os.pathsep

SilentGhost
fonte
219
Se, como eu, você não leu o corpo desta pergunta e apenas seguiu o título, acha que esse é o personagem que separa os elementos de um caminho do sistema de arquivos (barra no Linux e MacOSX, barra invertida no Windows). Não é, o caractere que separa os elementos de um PATH do shell usado para localizar comandos executáveis. os.sepou os.path.sepé o que você precisa para os caminhos do sistema de arquivos.
10767 Perry
71
os.pathsepis :or ;while os.path.sepis \\ or /- às vezes os nomes em Python me parecem chocantemente mal escolhidos. Isso .faz muita diferença.
ArtOfWarfare
1
@ Perry eu editei a pergunta. espero que minha edição esclareça a confusão (indiquei que esta pergunta está sendo feita sobre a "variável de ambiente PATH" em vez de um "caminho do sistema de arquivos").
Trevor Boyd Smith
Portanto, existem os.sepe os.path.sep, quais são iguais, os.pathsepe os.path.pathseptambém são iguais. Por que eles fariam isso?
usar o seguinte
32

É os.pathsep

Dave Costa
fonte
12

Tornando um pouco mais explícito (para iniciantes em python como eu)

import os
print(os.pathsep)
Nerrve
fonte
4

OK, então existem:

  • os.pathsepisso é ;e é um separador na PATHvariável de ambiente;
  • os.path.sepque está /no Unix / Linux e \no Windows, que é um separador entre os componentes do caminho.

A semelhança é uma fonte de confusão.

DVV
fonte
Você leu a pergunta? os.path.sepé a resposta para uma pergunta diferente .
Mark Ransom
Você está certo, obrigado! Minha confusão veio do fato de que, na verdade, eu estava procurando pelo separador específico do sistema '\' e '/' (que é os.path.sep), enquanto essa página foi proposta como um dos resultados da pesquisa.
DVV
1

Este é um caminho de amostra para o seu diretório de trabalho / pasta específica -

 import os
 my = os.path.sep+ "testImages" + os.path.sep + "imageHidden.png"
 print(my)

Saída para Linux-

/home/*******/Desktop/folder/PlayWithPy/src/testImages/imageHidden.png

Saída para Windows-

C:\\Users\\Administrator\\Desktop\\folder\\tests\\testImages\\imageHidden.png

Shivam Bharadwaj
fonte