¿Cómo obtener el separador de variable de entorno PATH en Python?

156

Cuando se deben concatenar múltiples directorios, como en una ruta de búsqueda ejecutable, hay un carácter separador dependiente del sistema operativo. Para Windows es ';', para Linux es ':'. ¿Hay alguna manera en Python para obtener en qué personaje dividirse?

En las discusiones sobre esta pregunta, ¿cómo puedo encontrar mi ruta de Python usando Python? , se sugiere que os.seplo haga. Esa respuesta es incorrecta, ya que es el separador para los componentes de un directorio o nombre de archivo y equivale a '\\'o '/'.

Mark Ransom
fuente

Respuestas:

220

os.pathsep

SilentGhost
fuente
219
Si, como yo, no leyó el cuerpo de esta pregunta y se limitó a leer el título, pensará que este es el carácter que separa los elementos de una ruta del sistema de archivos (barra diagonal en Linux y MacOSX, barra diagonal inversa en Windows). No es el personaje que separa los elementos de una RUTA de shell que se utiliza para localizar comandos ejecutables. os.sepo os.path.sepes lo que necesita para las rutas del sistema de archivos.
Perry
71
os.pathsepes :o ;while os.path.sepes \\ o /, a veces los nombres en Python me parecen sorprendentemente mal elegidos. Eso .hace una gran diferencia.
ArtOfWarfare
1
@Perry, edité la pregunta. espero que mi edición aclare la confusión (indiqué que esta pregunta es sobre la "variable de entorno PATH" en lugar de una "ruta del sistema de archivos").
Trevor Boyd Smith
Entonces hay os.sepy os.path.sep, que son iguales, así como os.pathsepy os.path.pathsepque también son iguales. ¿Por qué harían esto?
BallpointBen
32

Es os.pathsep

Dave Costa
fuente
12

Haciéndolo un poco más explícito (para los novatos de Python como yo)

import os
print(os.pathsep)
Nerrve
fuente
4

OK, entonces hay:

  • os.pathsepes decir ;y que es un separador en la PATHvariable de entorno;
  • os.path.sepeso está /en Unix / Linux y \en Windows, que es un separador entre los componentes de la ruta.

La similitud es una fuente de confusión.

DVV
fuente
¿Leíste la pregunta? os.path.sepEs la respuesta a una pregunta diferente .
Mark Ransom
Tienes razon, gracias! Mi confusión vino del hecho de que en realidad estaba buscando el separador específico del sistema '\' y '/' (que es os.path.sep), mientras que esta página se propuso como uno de los resultados de búsqueda.
DVV
1

Esta es una ruta de muestra para su directorio de trabajo / carpeta específica -

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

Salida para Linux

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

Salida para Windows

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

Shivam Bharadwaj
fuente