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.