Sé un Pythonista: Recibe trucos Python y accede a nuestro espacio de Slack

Obtener el nombre de un archivo en Python

Cómo obtener el nombre de un archivo en Python
Share on facebook
Share on twitter
Share on linkedin

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')

Si te ha resultado útil, compártelo con tus amigos 🤗

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

Sé un Pythonista: Recibe trucos Python y accede a nuestro espacio de Slack

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

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

Últimos posts

¿Quieres ser un auténtico Pythonista? 🐍

📩 Recibe de vez en cuando trucos, scripts y tutoriales Python en español para dominar el lenguaje. No es SPAM. Date de baja cuando quieras

🥇 Accede a nuestra comunidad privada de Slack: Pythonistas-es

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

Pythonistas-es

SÉ UN AUTÉNTICO PYTHONISTA

📩 Recibe trucos, scripts y tutoriales Python

🥇 Accede a nuestra comunidad privada de Slack