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()