Obtener información de un archivo en Python

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.

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…pathlibos
Tamañoruta.stat().st_sizeos.path.getsize(ruta)
Fecha de modificaciónruta.stat().st_mtimeos.path.getmtime(ruta)
Nombreruta.nameos.path.basename(ruta)
Carpetaruta.parentos.path.dirname(ruta)
Extensiónruta.suffixos.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.