una ruta obtener nombre manejo leer gestion escribir directorio carpetas carpeta archivos archivo actual python path path-manipulation

ruta - obtener nombre de archivo python



¿Cómo obtener solo la última parte de una ruta en Python? (7)

En Python, supongamos que tengo un camino como este:

/folderA/folderB/folderC/folderD/

¿Cómo puedo obtener solo la parte de la folderD ?


Aquí está mi enfoque:

>>> import os >>> print os.path.basename( os.path.dirname(''/folderA/folderB/folderC/folderD/test.py'')) folderD >>> print os.path.basename( os.path.dirname(''/folderA/folderB/folderC/folderD/'')) folderD >>> print os.path.basename( os.path.dirname(''/folderA/folderB/folderC/folderD'')) folderC


Estaba buscando una solución para obtener el último nombre de carpeta donde se encuentra el archivo, solo utilicé la división dos veces para obtener la parte correcta. No es la pregunta, pero google me transfirió aquí.

pathname = "/folderA/folderB/folderC/folderD/filename.py" head, tail = os.path.split(os.path.split(pathname)[0]) print(head + " " + tail)


Podrías hacerlo

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

ACTUALIZACIÓN1: este enfoque funciona en caso de que le proporcione /folderA/folderB/folderC/folderD/xx.py. Esto le da xx.py como el nombre base. Que no es lo que quieres, supongo. Entonces podrías hacer esto -

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

ACTUALIZACIÓN2: como señaló Lars , hacer cambios para acomodar el final ''/''.

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


Una solución ingenua (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:]


Use os.path.normpath , luego os.path.basename :

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

El primero elimina cualquier barra inclinada, el segundo te da la última parte de la ruta. Usar solo basename da todo después de la última barra, que en este caso es '''' .


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


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