import pandas as pd import os import re import logging from manejoArchivos import select_file def configurar_logger(ruta_log): os.makedirs(".\\data", exist_ok=True) logger = logging.getLogger('.\\data\\importacion_logger') logger.setLevel(logging.INFO) fh = logging.FileHandler(ruta_log, encoding='utf-8') fh.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s - %(message)s') fh.setFormatter(formatter) logger.addHandler(fh) return logger def revertir_transformaciones(texto, digitos, secciones): # Revertir <> a [[digits]] for digito in digitos: texto = texto.replace('<>', digito, 1) # Revertir <#> a <...> usando las secciones originales for seccion in secciones: texto = texto.replace('<#>', f'<{seccion}>', 1) return texto def importar_traduccion(archivo_maestro, archivo_traduccion): if not os.path.exists(archivo_maestro): print("El archivo maestro no existe.") return df_maestro = pd.read_excel(archivo_maestro) df_traduccion = pd.read_excel(archivo_traduccion) # Configurar el logger directorio = os.path.dirname(archivo_maestro) nombre_log = os.path.join(directorio, 'importacion_traduccion.log') logger = configurar_logger(nombre_log) # Iterar sobre las filas del archivo de traducción para revertir transformaciones y actualizar el maestro for index, fila in df_traduccion.iterrows(): clave = fila[df_maestro.columns[0]] if clave in df_maestro[df_maestro.columns[0]].values: # Obtener los dígitos y secciones originales de la clave digitos = re.findall(r'\d+', str(clave)) secciones = re.findall(r'<(.*?)>', str(clave)) # Actualizar solo las columnas que existen en df_maestro y df_traduccion for columna in df_traduccion.columns[1:]: if columna in df_maestro.columns: valor_traducido = fila[columna] if pd.isnull(valor_traducido): continue # Omitir celdas vacías valor_original = df_maestro.loc[df_maestro[df_maestro.columns[0]] == clave, columna].values[0] valor_revertido = revertir_transformaciones(valor_traducido, digitos, secciones) if pd.notnull(valor_original) and str(valor_original) != valor_revertido: df_maestro.loc[df_maestro[df_maestro.columns[0]] == clave, columna] = valor_revertido logger.info(f'Fila {index}, Columna {columna}: "{valor_original}" actualizado a "{valor_revertido}"') # Guardar el archivo maestro actualizado df_maestro.to_excel(archivo_maestro, index=False) print(f"Traducciones importadas y archivo maestro actualizado: {archivo_maestro}. Detalles de los cambios en {nombre_log}") if __name__ == "__main__": archivo_maestro = ".\\data\\1_hmi_master_translates.xlsx" archivo_traduccion = ".\\data\\2_master_export2translate.xlsx" importar_traduccion(archivo_maestro, archivo_traduccion)