Hay dos clases de preguntas sobre un archivo: las que se responden mirando el nombre y las que hay que preguntarle al disco. Con pathlib se nota bien la diferencia.
También te puede interesar
Lo que dice el nombre
from pathlib import Path
ruta = Path("salida/notas.txt")
print("nombre :", ruta.name)
print("sin extens.:", ruta.stem)
print("extensión :", ruta.suffix)
print("carpeta :", ruta.parent)
print("absoluta :", ruta.resolve())salidanombre : notas.txt sin extens.: notas extensión : .txt carpeta : salida absoluta : /trabajo/p2/salida/notas.txt
Nada de esto toca el disco salvo resolve(): un Path es solo una ruta bien entendida, y funciona aunque el archivo no exista.
Lo que hay que preguntar al disco
from datetime import datetime
print("existe :", ruta.exists(), "| archivo:", ruta.is_file(), "| carpeta:", ruta.is_dir())
st = ruta.stat()
print("tamaño :", st.st_size, "bytes")
print("modificado :", st.st_mtime)
print("legible :", datetime.fromtimestamp(st.st_mtime).strftime("%d/%m/%Y %H:%M:%S"))
print("permisos :", oct(st.st_mode & 0o777))salidaexiste : True | archivo: True | carpeta: False tamaño : 45 bytes modificado : 1791499764.8643615 legible : 08/10/2026 22:49:24 permisos : 0o644
stat() trae todo de una vez. La fecha viene como un número —segundos desde el 1 de enero de 1970— y hay que convertirla con datetime.fromtimestamp para leerla. Es lo que faltaba en la versión anterior, que mostraba 1556692109 y lo dejaba ahí.
st_ctime no es lo mismo en todos los sistemas. En Windows es la fecha de creación; en Linux es el último cambio de los metadatos —permisos, nombre—, no la creación. Si necesitas la fecha de modificación del contenido, usa siempre st_mtime, que significa lo mismo en todas partes.Las extensiones dobles
print(Path("informe.tar.gz").suffix, Path("informe.tar.gz").suffixes)
print(os.path.splitext("informe.tar.gz"))salida.gz ['.tar', '.gz']
('informe.tar', '.gz')suffix da solo la última. Si te importan todas, suffixes.
| Para… | pathlib | os |
|---|---|---|
| Tamaño | ruta.stat().st_size | os.path.getsize(ruta) |
| Fecha de modificación | ruta.stat().st_mtime | os.path.getmtime(ruta) |
| Nombre | ruta.name | os.path.basename(ruta) |
| Carpeta | ruta.parent | os.path.dirname(ruta) |
| Extensión | ruta.suffix | os.path.splitext(ruta)[1] |
Más información en inglés: Get information from a file in Python.
Todo el código se ejecutó con Python 3.14 en un contenedor limpio antes de publicar esta página; las salidas están copiadas de esa ejecución.