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 '/'.

Respostas:


220

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


12

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

import os
print(os.pathsep)

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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.