HMI_Translate_Helper_wMaste.../4_import_translate2master.py

69 lines
3.0 KiB
Python
Raw Normal View History

import pandas as pd
import os
import re
import logging
from manejoArchivos import select_file
def configurar_logger(ruta_log):
2024-07-30 12:16:58 -03:00
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__":
2024-07-30 12:16:58 -03:00
archivo_maestro = "/data/1_hmi_master_translates.xlsx"
archivo_traduccion = "/data/2_master_export2translate.xlsx"
importar_traduccion(archivo_maestro, archivo_traduccion)