commit ce8c3f8bb579921677d681a592f3d3f428ed1258 Author: nbaglietto Date: Sat Aug 16 04:19:00 2025 -0300 primer comit diff --git a/README.md b/README.md new file mode 100644 index 0000000..e621a25 --- /dev/null +++ b/README.md @@ -0,0 +1,72 @@ +# 🧹 Limpieza de Recibos de Sueldo — Script Python + +Este script automatiza la eliminación de recibos de sueldo antiguos, conservando únicamente los recibos correspondientes a los **últimos 5 meses**. Está diseñado para ejecutarse en entornos donde los recibos se almacenan en formato PDF con un nombre estructurado. + +--- + +## 📂 Ubicación esperada de los archivos + +El script busca archivos en el siguiente directorio: + +/mnt/xxxxxx/Recibos_sueldo/ + +Código + +Los archivos deben tener el siguiente formato: + +Recibo_.pdf + +Código + +Ejemplo válido: + +Recibo_12345678_Perez_202403.pdf + +Código + +--- + +## ⚙️ ¿Qué hace el script? + +- Calcula el periodo límite correspondiente a hace 5 meses desde la fecha actual. +- Escanea todos los archivos PDF que coincidan con el patrón `Recibo_*.pdf`. +- Extrae el periodo (YYYYMM) desde el nombre del archivo. +- Elimina los archivos cuyo periodo sea anterior al límite calculado. +- Ignora archivos mal nombrados que no respeten el formato esperado. + +--- + +## 🛡️ Seguridad y tolerancia a errores + +- Archivos con nombres inesperados son ignorados silenciosamente. +- Si ocurre un error al borrar un archivo (por permisos, bloqueo, etc.), se muestra un mensaje de error detallado. +- Se informa cuántos archivos fueron eliminados al finalizar. + +--- + +## 🚀 Cómo ejecutar + +```bash +python3 limpiar_recibos_por_mes_final.py +📋 Ejemplo de salida +Código +## LIMPIEZA DE RECIBOS ANTIGUOS (LÓGICA DE 5 MESES) ## +Se conservarán los recibos desde el periodo 202403 en adelante. + +Borrando los siguientes archivos: +Borrado: /mnt/bases_isis/Recibos_sueldo/Recibo_12345678_Perez_202210.pdf +Borrado: /mnt/bases_isis/Recibos_sueldo/Recibo_87654321_Gomez_202212.pdf + +Limpieza completada. Se han borrado 2 recibos antiguos. +📦 Requisitos +Python 3.x + +Acceso de escritura al directorio /mnt/bases_isis/Recibos_sueldo/ + +Archivos con formato Recibo___.pdf + +🧠 Notas adicionales +Este script puede integrarse fácilmente en tareas programadas (cron jobs) para mantener limpio el almacenamiento de recibos de forma automática. + +🛠️ Autor +Desarrollado por Nahuel —. diff --git a/limpiar_recibos_viejos.py b/limpiar_recibos_viejos.py new file mode 100755 index 0000000..2425723 --- /dev/null +++ b/limpiar_recibos_viejos.py @@ -0,0 +1,58 @@ +import os +import glob +from datetime import datetime + +def limpiar_recibos_por_mes_final(): + """ + Elimina los recibos de sueldo antiguos, conservando todos los recibos + de los últimos 5 meses. + """ + directorio_recibos = '/mnt/bases_isis/Recibos_sueldo/' + patron_archivos = os.path.join(directorio_recibos, 'Recibo_*.pdf') + + # Calcular el periodo límite (YYYYMM) de hace 5 meses + hoy = datetime.now().date() + año_actual = hoy.year + mes_actual = hoy.month + + mes_limite = mes_actual - 5 + año_limite = año_actual + if mes_limite <= 0: + mes_limite += 12 + año_limite -= 1 + + periodo_limite = f"{año_limite:04d}{mes_limite:02d}" + + print(f"## LIMPIEZA DE RECIBOS ANTIGUOS (LÓGICA DE 5 MESES) ##") + print(f"Se conservarán los recibos desde el periodo {periodo_limite} en adelante.") + + todos_los_archivos = glob.glob(patron_archivos) + archivos_para_borrar = [] + archivos_borrados_count = 0 + + for path_archivo in todos_los_archivos: + try: + nombre_archivo = os.path.basename(path_archivo) + periodo_archivo = nombre_archivo.split('_')[3] + + if periodo_archivo < periodo_limite: + archivos_para_borrar.append(path_archivo) + except IndexError: + # Ignorar archivos con formato de nombre inesperado + continue + + if archivos_para_borrar: + print("\nBorrando los siguientes archivos:") + for path_a_borrar in sorted(archivos_para_borrar): + try: + os.remove(path_a_borrar) + print(f"Borrado: {path_a_borrar}") + archivos_borrados_count += 1 + except OSError as e: + print(f"ERROR: No se pudo borrar el archivo '{path_a_borrar}': {e}") + print(f"\nLimpieza completada. Se han borrado {archivos_borrados_count} recibos antiguos.") + else: + print("\nNo se encontraron recibos para borrar. Todos los recibos son de los últimos 5 meses.") + +if __name__ == "__main__": + limpiar_recibos_por_mes_final()