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

Respuestas:


220

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


12

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

import os
print(os.pathsep)

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.


¿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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.