"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.
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
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
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
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.txtname→ notas.txtstem→ notassuffix→ .txtparent→ proyectos/python
Completa las propiedades semánticas de Path y compón una ruta nueva con /.
nombre: notas.txt base: notas extensión: .txt carpeta: proyectos/python datos/ventas.csv
La salida aparecerá aquí.
Necesito una pista
- Usa
ruta.name,ruta.stem,ruta.suffixyruta.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")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
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.
Si puedes formar carpeta / "archivo.ext" y distinguir esa composición de la creación real del archivo, puedes seguir.