Comment obtenir le séparateur de variable d'environnement PATH en Python?

156

Lorsque plusieurs répertoires doivent être concaténés, comme dans un chemin de recherche exécutable, il existe un caractère de séparation dépendant du système d'exploitation. Pour Windows c'est ';', pour Linux c'est ':'. Existe-t-il un moyen en Python d'obtenir sur quel caractère se diviser?

Dans les discussions sur cette question Comment trouver mon chemin python en utilisant python? , il est suggéré de os.seple faire. Cette réponse est fausse, car c'est le séparateur des composants d'un répertoire ou d'un nom de fichier et équivaut à '\\'ou '/'.

Mark Ransom
la source

Réponses:

220

os.pathsep

SilentGhost
la source
219
Si, comme moi, vous n'avez pas lu le corps de cette question et que vous êtes simplement passé par le titre, vous penserez que c'est le caractère qui sépare les éléments d'un chemin de système de fichiers (barre oblique sous Linux et MacOSX, barre oblique inverse sous Windows). Ce n'est pas, c'est le caractère qui sépare les éléments d'un shell PATH qui est utilisé pour localiser les commandes exécutables. os.sepou os.path.sepest ce dont vous avez besoin pour les chemins de système de fichiers.
Perry
71
os.pathsepis :ou ;while os.path.sepis \\ or /- parfois les noms en Python me semblent choquants mal choisis. Cela .fait une trop grande différence.
ArtOfWarfare
1
@Perry j'ai édité la question. avec un peu de chance, mon édition dissipe la confusion (j'ai indiqué que cette question concerne la "variable d'environnement PATH" au lieu d'un "chemin du système de fichiers").
Trevor Boyd Smith
Il y a donc os.sepet os.path.sep, qui sont égaux, ainsi que os.pathsepet os.path.pathsepqui sont également égaux. Pourquoi feraient-ils cela?
BallpointBen
32

C'est os.pathsep

Dave Costa
la source
12

Rendre un peu plus explicite (pour les débutants en python comme moi)

import os
print(os.pathsep)
Nerrve
la source
4

OK, il y a donc:

  • os.pathsepc'est-à-dire ;et qui est un séparateur dans la PATHvariable d'environnement;
  • os.path.sepc'est- /à- dire sous Unix / Linux et \sous Windows, qui est un séparateur entre les composants du chemin.

La similitude est source de confusion.

DVV
la source
Avez-vous même lu la question? os.path.sepest la réponse à une question différente .
Mark Ransom
Vous avez raison, merci! Ma confusion est venue de ce fait qu'en fait je cherchais le séparateur spécifique au système '\' et '/' (qui est os.path.sep) alors que cette page était proposée comme l'un des résultats de la recherche.
DVV
1

Ceci est un exemple de chemin pour votre répertoire de travail / dossier spécifique -

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

Sortie pour Linux-

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

Sortie pour Windows-

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

Shivam Bharadwaj
la source