Obtener nombres de archivo con Python: os.path.basename()

1. ¿Qué es os.path.basename()?

La os.path.basename() de Python es una función que obtiene la parte del «nombre de archivo» de la ruta de archivo especificada. Por ejemplo, si se le da una ruta como «/home/user/documents/file.txt», os.path.basename() devuelve «file.txt». Esta función puede usarse en diversos escenarios como una herramienta de manipulación de archivos multiplataforma que funciona en diferentes sistemas operativos.

Resumen de os.path.basename()

os.path.basename() es una función del módulo os que permite extraer el último elemento de una ruta de archivo (normalmente el nombre del archivo). Esta funcionalidad es útil cuando se desea obtener solo el nombre del archivo mientras se utiliza la ruta completa.

Ejemplo básico de uso

import os

file_path = "/home/user/documents/report.pdf"
file_name = os.path.basename(file_path)
print(file_name)  # Salida: report.pdf

En este código se extrae el nombre de archivo «report.pdf» de la ruta de archivo especificada. Es utilizado en muchos escenarios, desde principiantes en Python hasta profesionales.

2. Cómo usar os.path.basename()

A continuación, explicaremos cómo usar realmente os.path.basename() y los patrones de uso habituales.

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

Si se pasa una ruta completa a os.path.basename(), devuelve el nombre del archivo al final de la ruta. Como se puede obtener el nombre del archivo incluyendo la extensión, se puede mostrar directamente o utilizarlo en otros procesos.

Código de ejemplo

import os

file_path = "/home/user/documents/report.pdf"
file_name = os.path.basename(file_path)
print(file_name)  # Salida: report.pdf

Cómo obtener el nombre del directorio a partir de una ruta de directorio

Si se pasa una ruta de directorio (en lugar de una ruta de archivo) a os.path.basename(), se devuelve el nombre del directorio, que es el último elemento. En el siguiente ejemplo, se devuelve ‘documents’ a partir de ‘/home/user/documents/’.

Código de ejemplo

import os

dir_path = "/home/user/documents/"
directory_name = os.path.basename(dir_path)
print(directory_name)  # Salida: documents

Obtener el nombre de archivo con extensión

os.path.basename() devuelve el nombre del archivo incluyendo su extensión. Al poder obtener el nombre del archivo sin verificar la presencia de una extensión, es simple y práctico.

Código de ejemplo

import os

file_path = "/path/to/data/file.csv"
file_name_with_extension = os.path.basename(file_path)
print(file_name_with_extension)  # Salida: file.csv

3. Comprender las diferencias de os.path.basename() con otras funciones relacionadas

os.pathEl módulo, además de basename(), tiene varias funciones útiles para la manipulación de rutas. A continuación, comparemos con los os.path.dirname(), os.path.split() y os.path.splitext() más usados.

Diferencias con os.path.dirname()

  • os.path.dirname() obtiene la ruta del directorio, mientras que os.path.basename() obtiene el nombre del archivo.

Diferencias con os.path.split()

  • os.path.split() puede obtener simultáneamente la ruta del directorio y el nombre del archivo.

Combinación con os.path.splitext()

  • Al usar os.path.splitext(), se puede eliminar fácilmente la extensión del nombre del archivo.

4. Obtener nombres de archivo con pathlib de forma más sencilla

Python 3.4 en adelante, el módulo pathlib para la manipulación de rutas de archivo se ha estandarizado. Es más intuitivo que os.path y es muy útil para proyectos donde la legibilidad es especialmente importante.

Uso de pathlib.Path.name

from pathlib import Path

file_path = Path("/home/user/documents/report.pdf")
print(file_path.name)  # Output: report.pdf

Al usar pathlib.Path.name, se puede obtener el nombre del archivo fácilmente y realizar operaciones equivalentes a basename() de manera orientada a objetos.

5. Ejemplos de uso real

En proyectos reales, veamos cómo se está utilizando os.path.basename() mediante los siguientes ejemplos.

Renombrado de nombres de archivo

import os

directory = "/path/to/files"
new_prefix = "new_file"

for index, filename in enumerate(os.listdir(directory)):
    old_file = os.path.join(directory, filename)
    if os.path.isfile(old_file):
        new_file_name = f"{new_prefix}_{index}{os.path.splitext(filename)[1]}"
        new_file = os.path.join(directory, new_file_name)
        os.rename(old_file, new_file)

6. Precauciones y mejores prácticas

Al usar os.path.basename(), tenga en cuenta las diferencias en los caracteres separadores de ruta según el SO y la combinación con pathlib, entre otros, y preste atención a los siguientes puntos.

  1. Utilizar os.path.join() y pathlib.Path() para compatibilidad multiplataforma
  2. Se verifica la existencia de archivos con os.path.exists() y os.path.isfile()

7. Resumen

os.path.basename() es una función muy útil para obtener el nombre de archivo a partir de una ruta de archivo en Python. En este artículo, explicamos en detalle desde el uso básico de basename() hasta las funciones relacionadas y las diferencias con pathlib.

  • Obtención del nombre de archivo desde soporte multiplataforma, creo que ha comprendido cómo es útil en diversas situaciones prácticas.
  • Próximo paso como, considere también el uso de otras funciones os.path y pathlib. La manipulación de archivos será aún más conveniente.