317 votes

comment obtenir seulement la dernière partie d'un chemin en python

J'utilise wxPython et Python pour développer une interface graphique. Si j'utilise wx.dirdialog pour obtenir le répertoire comme ceci:

/folderA/folderB/folderC/folderD/

Comment puis-je obtenir la part folderD ?

Merci d'avance.

506voto

larsmans Points 167484

Utilisez os.path.normpath , puis os.path.basename :

 >>> os.path.basename(os.path.normpath('/folderA/folderB/folderC/folderD/'))
'folderD'
 

Le premier supprime les barres obliques, le second vous donne la dernière partie du chemin. Utiliser uniquement basename donne tout après la dernière barre oblique, qui est dans ce cas '' .

29voto

Srikar Appal Points 26892

Vous pourriez faire

 import os
os.path.basename('/folderA/folderB/folderC/folderD')
 

UPDATE1: Cette approche fonctionne si vous lui donnez /folderA/folderB/folderC/folderD/xx.py. Cela donne xx.py comme nom de base. Ce qui n'est pas ce que vous voulez, je suppose. Pour que vous puissiez faire ceci -

 import os
path = "/folderA/folderB/folderC/folderD"
if os.path.isdir(path):
    dirname = os.path.basename(path)
 

UPDATE2: Comme l'a souligné Lars, apportez des modifications afin de prendre en compte le '/' suivi.

 from os.path import normpath, basename
basename(normpath('/folderA/folderB/folderC/folderD/'))
 

2voto

mshsayem Points 5271

Une solution naïve (Python 2.5.2+):

 s="/path/to/any/folder/orfile"
desired_dir_or_file = s[s.rindex('/',0,-1)+1:-1] if s.endswith('/') else s[s.rindex('/')+1:]
 

-3voto

GSto Points 13106
path = "/folderA/folderB/folderC/folderD/"
last = path.split('/').pop()

-5voto

Andrew Sledge Points 4883
str = "/folderA/folderB/folderC/folderD/"
print str.split("/")[-2]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X