Come ottenere il separatore di variabili d'ambiente PATH in Python?


156

Quando è necessario concatenare più directory, come in un percorso di ricerca eseguibile, esiste un carattere di separazione dipendente dal sistema operativo. Per Windows è ';', per Linux è ':'. C'è un modo in Python per ottenere su quale personaggio dividere?

Nelle discussioni su questa domanda Come posso scoprire il mio percorso Python usando Python? , si suggerisce che os.seplo farà. Questa risposta è errata, poiché è il separatore per i componenti di una directory o di un nome file ed equivale a '\\'o '/'.

Risposte:


220

219
Se, come me, non hai letto il corpo di questa domanda e hai semplicemente preso il titolo, penserai che questo sia il personaggio che separa gli elementi di un percorso del filesystem (barra in avanti su Linux e MacOSX, barra rovesciata su Windows). Non lo è, è il carattere che separa gli elementi di un PERCORSO shell utilizzato per localizzare i comandi eseguibili. os.sepo os.path.sepè quello che ti serve per i percorsi del filesystem.
Perry,

71
os.pathsepè :o ;mentre os.path.sepè \\ o /- a volte i nomi in Python mi sembrano scioccamente scelti male. Ciò .rende la differenza troppo grande.
ArtOfWarfare il

1
@Perry ho modificato la domanda. spero che la mia modifica chiarisca la confusione (ho indicato che questa domanda si sta ponendo sulla "variabile d'ambiente PATH" invece che su un "percorso del filesystem").
Trevor Boyd Smith,

Quindi ci sono os.sepe os.path.sep, che sono uguali, così come os.pathsepe os.path.pathsepche sono uguali. Perché dovrebbero farlo?
BallpointBen,


12

Rendendolo un po 'più esplicito (per i neofiti di Python come me)

import os
print(os.pathsep)

4

OK, quindi ci sono:

  • os.pathsepcioè ;e che è un separatore nella PATHvariabile d'ambiente;
  • os.path.sepcioè /in Unix / Linux e \in Windows, che è un separatore tra i componenti del percorso.

La somiglianza è fonte di confusione.


Hai persino letto la domanda? os.path.sepè la risposta a una domanda diversa .
Mark Ransom,

Hai ragione, grazie! La mia confusione derivava dal fatto che in realtà stavo cercando il separatore specifico del sistema '\' e '/' (che è os.path.sep) mentre questa pagina è stata proposta come uno dei risultati della ricerca.
DVV

1

Questo è un percorso di esempio per la directory di lavoro / cartella specifica -

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

Uscita per Linux-

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

Uscita per Windows

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.