59 lines
2.0 KiB
Python
Executable File
59 lines
2.0 KiB
Python
Executable File
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()
|