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

Réponses:


220

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


12

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

import os
print(os.pathsep)

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.


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.