Saltar a contenido

Datetime y Pathlib: Tiempo y Sistema de Archivos

En este nivel avanzado, dejamos de tratar las fechas como simples textos y las rutas como simples cadenas. Python ofrece herramientas orientadas a objetos para manipular el tiempo y los archivos con total precisión.


1. El Módulo datetime

El manejo de fechas es complejo debido a los años bisiestos y las zonas horarias. El módulo datetime encapsula esta complejidad en objetos fáciles de usar.

  • datetime.now(): Captura el instante preciso actual.
  • strftime: Permite formatear fechas a texto (ej. "2026-01-08").
  • timedelta: Se utiliza para realizar operaciones matemáticas con fechas (sumar días, restar horas).

2. El Módulo pathlib (Rutas Modernas)

Históricamente, Python usaba os.path (tratando las rutas como texto). pathlib cambió esto al tratar las rutas como objetos.

Ventajas de Pathlib:

  1. Compatibilidad: Funciona igual en Windows que en Linux/Mac.
  2. Legibilidad: Puedes usar el operador / para unir carpetas de forma intuitiva.
  3. Funcionalidad: Un objeto Path puede decirte si el archivo existe, su extensión o crear carpetas de forma automática.

Ejemplo de Uso con Pathlib

Para trabajar con Pathlib, primero importamos la clase: from pathlib import Path. Luego, podemos crear una ruta de forma segura: carpeta = Path("documentos") / "reportes". Para crear la carpeta físicamente si no existe, usamos: carpeta.mkdir(parents=True, exist_ok=True). Finalmente, para obtener la extensión de un archivo usamos el atributo .suffix.


Reto: El Organizador de Log-Files

Imagina que necesitas crear un archivo de registro con el año actual como nombre de carpeta.

Instrucciones:

  1. Importa datetime desde el módulo datetime.
  2. Importa Path desde el módulo pathlib.
  3. Obtén la fecha actual usando datetime.now() y guárdala en la variable hoy.
  4. Crea una variable llamada nombre_archivo que contenga el año actual como string (usa str(hoy.year)).
  5. Crea un objeto Path llamado ruta_log que represente la ruta: logs / nombre_archivo. (Usa el operador /).

# Gestiona el tiempo y el sistema: