Obtener el nombre de un archivo en Python

Cómo obtener el nombre de un archivo en Python

Manipular nombres de ficheros y directorios es una tarea muy común en muchas aplicaciones. Por ejemplo, para listar los ficheros de un directorio, navegar entre carpetas, … En este post aprenderás cómo obtener el nombre de un archivo en Python dada una ruta.

Para ello, haremos uso del módulo os.path. Este módulo, que pertenece a la librería estándar de Python, ofrece funciones de utilidad para manipular nombres de rutas del sistema operativo.

Cómo obtener el nombre de un archivo a partir de una ruta

Imaginemos que tenemos la siguiente ruta: /Users/Juanjo/workspace/j2logo/pruebas.txt para obtener el nombre del fichero, pruebas.txt, llamaremos a la función split() del módulo os.path:

>>> import os

>>> ruta = '/Users/Juanjo/workspace/j2logo/pruebas.txt'
>>> os.path.split(ruta)
('/Users/Juanjo/workspace/j2logo', 'pruebas.txt')

Como puedes apreciar, esta función devuelve dos valores. El primero de ellos es el directorio en el que se encuentra el fichero, mientras que el segundo, es el nombre del propio archivo.

Realmente, la función split() divide el nombre de una ruta en dos: cabeza y cola. El primer valor devuelto siempre es la cabeza y el segundo la cola. Esto lo hace en función de dónde encuentre el último carácter /. La parte de la cola nunca contendrá un carácter /. Si la ruta termina en una barra inclinada, la cola estará vacía. Si no hay una barra en la ruta, la cabeza estará vacía. Veámoslo con un ejemplo:

>>> import os

# La ruta acaba en /
>>> ruta = '/Users/Juanjo/workspace/j2logo/'
>>> os.path.split(ruta)
('/Users/Juanjo/workspace/j2logo', '')

# No hay carácter / en la ruta
>>> ruta = 'pruebas.txt'
>>> os.path.split(ruta)
('', 'pruebas.txt')

Obtener la extensión de un fichero

Otra función de utilidad del módulo os.path para manipular nombres de fichero es splitext(). Esta función la podemos usar para separar el nombre de un fichero en dos: el propio nombre y su extensión.

>>> import os

>>> ruta = 'pruebas.txt'
>>> os.path.splitext(ruta)
('pruebas', '.txt')

La función divide una ruta a partir de encontrar el carácter . y devuelve una raíz y una extensión (que comienza con el carácter .). Si la ruta comienza por el carácter . y no hubiera ningún punto más, entonces la extensión se devuelve vacía.

>>> import os

# Ruta que comienza con . y solo hay ese
>>> ruta = '.pruebas'
>>> os.path.splitext(ruta)
('.pruebas', '')

# Ruta con varios puntos
>>> ruta = 'pruebas.old.txt'
>>> os.path.splitext(ruta)
('pruebas.old', '.txt')

¿Quieres ser expert@ en Python? Recibe trucos Python y las últimas novedades del blog

¡Eyyy! Esto también te puede interesar 👇

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

j2logo profile

Quiero ayudarte a que seas mejor programador/a, pero no uno cualquiera, sino uno de los top.

¿Quieres ser expert@ en Python? 🐍

❤️ He ayudado a miles de programadores/as como tú a ser mejores Pythonistas

📩 Recibe de vez en cuando trucos y scripts Python y las últimas novedades del blog

* Al enviar el formulario confirmas que aceptas la POLITICA DE PRIVACIDAD

¿Quieres ser expert@ en PYTHON?

j2logo-pythonistas

❤️ He ayudado a miles de programadores/as como tú

📩 Recibe trucos, scripts y las novedades del blog

¿Quieres dominar Python?

Python, Guía para ser un Pythonista

El curso con el que aprender el lenguaje desde cero. Con mi soporte y ayuda.

OFERTA BLACK FRIDAY

35% de descuento