Lección 25 de 45 · Errores y archivos

Rutas con pathlib

Construye y consulta rutas como objetos, en lugar de pegarlas a mano con barras que cambian entre sistemas.

Rutas legiblesInspección semánticaSin concatenar barras
Índice · Lección 25/45
Una ruta se parece a texto, pero representa algo más concreto

"datos/alumnos.csv" es un string válido, pero cuando lo tratas solo como texto terminas buscando barras, extensiones y nombres a mano.

pathlib.Path representa la ruta como un objeto con operaciones pensadas exactamente para ese trabajo.

Evidencia de aprendizaje

Preguntar a un Path por su nombre, extensión, base y carpeta en vez de manipularlo como texto.

Empieza construyendo rutas por piezas, no pegando strings

El operador / une partes de una ruta
from pathlib import Path

carpeta = Path("datos")
ruta = carpeta / "alumnos.csv"
print(ruta)

El símbolo / aquí no divide números. Path lo redefine para componer rutas de forma legible.

La ventaja práctica es que dejas de decidir tú qué separador necesita el sistema operativo.

El objeto ya sabe distinguir nombre, extensión y carpeta padre

Preguntar a la ruta en vez de cortar texto
from pathlib import Path

ruta = Path("informes") / "ventas.csv"
print(ruta.name)
print(ruta.stem)
print(ruta.suffix)
print(ruta.parent)

name devuelve el nombre completo, stem el nombre sin la última extensión, suffix la extensión y parent la carpeta que contiene la ruta.

Son atributos descriptivos: no necesitas recordar índices ni usar split(".").

Una ruta puede describir algo que todavía no existe

Path("datos") / "hoy.csv" no crea automáticamente ni la carpeta ni el archivo. Primero construyes una descripción de dónde debería estar.

Esto evita una confusión frecuente: construir una ruta y crear un recurso son dos acciones distintas. Métodos como exists(), mkdir() o write_text() realizan o consultan acciones concretas.

Para texto breve, read_text y write_text pueden expresar mejor la intención

Guardar y leer a través de Path
from pathlib import Path

ruta = Path("mensaje.txt")
ruta.write_text("Hola", encoding="utf-8")
print(ruta.read_text(encoding="utf-8"))

No sustituyen a open() en todos los casos, pero para archivos pequeños hacen muy visible la intención: «escribe este texto» y «lee este texto».

Pregunta a la ruta en vez de cortarla como texto

proyectos/python/notas.txt
  • name → notas.txt
  • stem → notas
  • suffix → .txt
  • parent → proyectos/python

Completa las propiedades semánticas de Path y compón una ruta nueva con /.

Salida esperada
nombre: notas.txt
base: notas
extensión: .txt
carpeta: proyectos/python
datos/ventas.csv
rutas.py
La salida aparecerá aquí.

Necesito una pista
  • Usa ruta.name, ruta.stem, ruta.suffix y ruta.parent.
Ver una solución razonada
from pathlib import Path

ruta = Path("proyectos/python/notas.txt")
print("nombre:", ruta.name)
print("base:", ruta.stem)
print("extensión:", ruta.suffix)
print("carpeta:", ruta.parent)
print(Path("datos") / "ventas.csv")
Para después: rutas absolutas, resolve() y búsqueda con glob son útiles, pero no hacen falta para dominar composición e inspección.

Cuando veas muchas operaciones de strings sobre una ruta, detente

Expresiones como ruta.split("/")[-1] o concatenaciones con "/" suelen ser una señal de que estás resolviendo manualmente un problema que Path ya conoce.

Tu primera pregunta debería ser: «¿Path tiene un atributo o método para esto?».

Recupera lo anterior · minuto 5

Sin mirar apuntes

Necesitas leer un archivo cuyo nombre llega como Path y convertir cada línea a entero. ¿Dónde podrían aparecer fallos previsibles?

Comprobar

La ruta puede no existir al abrir y una línea puede no ser convertible a entero. El objetivo es identificar la operación concreta antes de decidir si y cómo capturar una excepción.

La idea que debe sobrevivir aunque olvides los métodos

Una ruta no es solo una frase con barras. Al representarla con Path, puedes construirla y consultarla mediante operaciones con significado.

Listo para trabajar con formatos de datos

Si puedes formar carpeta / "archivo.ext" y distinguir esa composición de la creación real del archivo, puedes seguir.