2010-04-29 3 views
59

Comment ajouter une barre oblique (/ pour * nix, \ pour win32) à une chaîne de répertoire, si la barre oblique n'est pas déjà présente? Merci!Python, ajouter une barre oblique à la chaîne d'annuaire, OS indépendamment

+0

Que voulez-vous faire avec? –

+5

Vous devez utiliser le module 'os.path' (http://docs.python.org/library/os.path.html) au lieu de manipuler les chaînes directement. Utilisez 'os.path.join' pour concaténer les composants du chemin. – kennytm

+0

@Tim Pietzcker, donc je peux être sûr qu'il y a une barre oblique lorsque je concatte la chaîne du dossier avec un nom de fichier – ohho

Répondre

91

os.path.join(path, '') ajoutera le slash si ce n'est pas déjà là.

Vous pouvez faire os.path.join(path, '', '') ou os.path.join(path_with_a_trailing_slash, '') et vous aurez toujours seulement un slash final.

7

Vous pouvez le faire manuellement:

path = ... 

import os 
if not path.endswith(os.path.sep): 
    path += os.path.sep 

Cependant, il est généralement beaucoup plus propre à utiliser os.path.join.

+0

+1 pour 'os.path.join' –

43
os.path.normpath(mypath) + os.sep 
+0

Merci! clair et concis – dopplesoldner

+9

cela échoue si le chemin d'origine est la racine, '\' – mingxiao

-1

Vous pouvez utiliser quelque chose comme ceci:

os.path.normcase(path) 
    Normalize the case of a pathname. On Unix and Mac OS X, this returns the path unchanged; on case-insensitive filesystems, it converts the path to lowercase. On Windows, it also converts forward slashes to backward slashes. 

Sinon vous pouvez chercher quelque chose d'autre sur this la page

22

Puisque vous souhaitez connecter un répertoire et un nom de fichier, utilisez

os.path.join(directory, filename) 

Si vous voulez vous débarrasser de .\..\..\blah\ chemins, utiliser

os.path.join(os.path.normpath(directory), filename) 
Questions connexes