def _generate_copy_config(self): run_key = datetime.now().strftime("%Y%m%d-%H%M%S") [config_name, extension] = os.path.basename(self._contexto.get_atributo(EnumAtributo.PATH_CONFIGURACAO)).split( '.') if not Copy.copy_file(self._contexto.get_atributo(EnumAtributo.PATH_CONFIGURACAO), os.path.join(self._contexto.get_atributo(EnumAtributo.PATH_PROJETO), self._base_folder_name, f'{config_name}_{run_key}.{extension}.bk')): self.log(tipo=EnumLogStatus.ERRO_FATAL, texto='Erro geracao arquivo de backup da configuracao') cont = '' for [key, value] in self._contexto._configuracao.items(): for val in value: if key not in [EnumAtributo.MODULE.name, EnumAtributo.PATH_PROJETO.name, EnumAtributo.PATH_CONFIGURACAO.name, EnumAtributo.PATH_LOG.name]: cont += f'{key}\t{val}\n' if not TXT().salvar( os.path.join(self._contexto.get_atributo(EnumAtributo.PATH_PROJETO), self._base_folder_name, f'{config_name}.{extension}'), cont, 'w'): self.log(tipo=EnumLogStatus.ERRO_FATAL, texto='Erro geracao arquivo de configuracao') self.log(texto=f'Arquivo de configuracao gerado.{config_name}')
def run(self, contexto: Contexto): """ Metodo responsavel por setar configuracao ao utilizar funcoes de teste para avaliacao :param Contexto contexto: contexto com todas as informações necessárias """ super(Rastrigin, self).run(contexto) new_base_path = os.path.join(self._contexto.get_atributo(EnumAtributo.PATH_PROJETO), self._base_folder_name) folder_data_base = os.path.dirname(src.modulo.problemas_fechados.funcoes_teste.base.rastrigin.__file__) Copy.copy_file(os.path.join(folder_data_base, self._dominio_file_name), os.path.join(new_base_path, self._dominio_file_name)) self._verifica_config()
def _copy_config(self): [config_name, extension] = os.path.basename(self._contexto.get_atributo(EnumAtributo.PATH_CONFIGURACAO)).split('.') if not Copy.copy_file(self._contexto.get_atributo(EnumAtributo.PATH_CONFIGURACAO), os.path.join(self._contexto.get_atributo(EnumAtributo.PATH_PROJETO), self._base_folder_name, f'{config_name}.{extension}')): self.log(tipo=EnumLogStatus.ERRO_FATAL, texto='Erro geracao arquivo de backup da configuracao')
def _salvar(self, dados_copiar_origem, dados_copiar_destino): for dado_copiar_origem, dado_copiar_destino in zip( dados_copiar_origem, dados_copiar_destino): self.log( texto=f'copiando dados {os.path.basename(dado_copiar_origem)}') if not Copy.copy_file( dado_copiar_origem, dado_copiar_destino, replace=False): self.log( texto= f'Arquivo {dado_copiar_origem} nao foi salvo na pasta de melhores estratégias. Arquivo ja existente.' )
def salvar(self, path_arquivo: str, conteudo: str, metodo_gravacao: str = "w") -> bool: """ Método para salvar conteudo de arquivos :param str path_arquivo: Caminho do arquivo :param str conteudo: Conteudo a ser salvo :param str metodo_gravacao: Método de gravação, padrão w :return: Se deu erro ou não :rtype: bool """ path_arquivo = InOut.ajuste_path(path_arquivo) try: if not Copy.criar_arquivos(path_arquivo): return False arq = open(path_arquivo, metodo_gravacao) arq.write(conteudo) arq.close() except FileNotFoundError as ex: self.log(tipo=EnumLogStatus.WARN, texto=f'Erro ao salvar arquivo.', info_ex=str(ex)) return False except PermissionError as ex: self.log(tipo=EnumLogStatus.WARN, texto=f'Erro ao salvar arquivo.', info_ex=str(ex)) return False except TypeError as ex: self.log(tipo=EnumLogStatus.WARN, texto=f'Erro ao salvar arquivo.', info_ex=str(ex)) return False except NameError as ex: self.log(tipo=EnumLogStatus.WARN, texto=f'Erro ao salvar arquivo.', info_ex=str(ex)) return False except IOError as ex: self.log(tipo=EnumLogStatus.WARN, texto=f'Erro ao salvar arquivo.', info_ex=str(ex)) return False return True
def _preparar_arquivos(self): path_projeto = self._contexto.get_atributo(EnumAtributo.PATH_PROJETO) path_simulacao = self._contexto.get_atributo( EnumAtributo.PATH_SIMULACAO) gevts_template_executar = self._contexto.get_atributo( EnumAtributo.AVALIACAO_MERO_GEVTS_TEMPLATES_EXECUTAR) for prefixo in gevts_template_executar.keys(): path_completo_origem = InOut.ajuste_path( f'{path_projeto}/{gevts_template_executar[prefixo]["gevt_path"]}' ) path_completo_destino = InOut.ajuste_path( f'{path_projeto}/{path_simulacao}/{gevts_template_executar[prefixo]["gevt_file_name"]}.mero' ) if not Copy.copy_file(path_completo_origem, path_completo_destino): self.log(tipo=EnumLogStatus.ERRO_FATAL, texto=f'Erro no GEVT.')
def run(self, contexto: Contexto): super(CampoNamoradoPosicionamento, self).run(contexto) new_base_path = os.path.join( self._contexto.get_atributo(EnumAtributo.PATH_PROJETO), self._base_folder_name) folder_data_base = os.path.dirname( src.modulo.problemas_fechados.campo_namorado_posicionamento.base. __file__) if not os.path.exists(new_base_path): self.log( texto= f'Criando folder base do modelo caixa preta CampoNamoradoPosicionamento' ) if not Copy.copy_folder(folder_data_base, new_base_path): self.log( tipo=EnumLogStatus.ERRO_FATAL, texto= f'Erro ao gerar pasta base para o problema CampoNamoradoPosicionamento' ) try: os.remove(os.path.join(new_base_path, "__init__.py")) except: pass try: shutil.rmtree(os.path.join(new_base_path, "__pycache__")) except: pass else: try: os.remove(os.path.join(new_base_path, "campoNamorado_OPT.tpl")) except: pass try: os.remove( os.path.join(new_base_path, "campoNamorado_OPT.unieco")) except: pass try: os.remove( os.path.join(new_base_path, "campoNamorado_OPT.unimap")) except: pass try: os.remove(os.path.join(new_base_path, "dominio.csv")) except: pass try: os.remove(os.path.join(new_base_path, "gevt.mero")) except: pass try: shutil.rmtree(os.path.join(new_base_path, "includes")) except: pass try: os.remove(os.path.join(new_base_path, "__init__.py")) except: pass try: shutil.rmtree(os.path.join(new_base_path, "__pycache__")) except: pass Copy.copy_file( os.path.join(folder_data_base, "campoNamorado_OPT.tpl"), os.path.join(new_base_path, "campoNamorado_OPT.tpl")) Copy.copy_file( os.path.join(folder_data_base, "campoNamorado_OPT.unieco"), os.path.join(new_base_path, "campoNamorado_OPT.unieco")) Copy.copy_file( os.path.join(folder_data_base, "campoNamorado_OPT.unimap"), os.path.join(new_base_path, "campoNamorado_OPT.unimap")) Copy.copy_file(os.path.join(folder_data_base, "dominio.csv"), os.path.join(new_base_path, "dominio.csv")) Copy.copy_file(os.path.join(folder_data_base, "gevt.mero"), os.path.join(new_base_path, "gevt.mero")) Copy.copy_folder(os.path.join(folder_data_base, "includes"), os.path.join(new_base_path, "includes")) self._verifica_config() gevts_templates = self._contexto.get_gevts_templates( self._contexto.get_atributo( EnumAtributo.AVALIACAO_MERO_GEVT_TEMPLATE)) self._contexto.set_atributo( EnumAtributo.AVALIACAO_MERO_GEVTS_TEMPLATES_EXECUTAR, gevts_templates, sobrescreve=True) uniecos = self._contexto.get_atributo( EnumAtributo.AVALIACAO_MERO_UNIECO_PATH) self._contexto.set_atributo( EnumAtributo.AVALIACAO_MERO_UNIECOS_EXECUTAR, self._contexto.get_uniecos(uniecos), sobrescreve=True)
import os import pytest import shutil from src.inout.InOut import InOut from src.inout.TXT import TXT from src.inout.Copy import Copy import tests.utilitarios.PathsFiles as paths_files copy = Copy() copy.set_arquivo_log(paths_files.path_arquivo_log()) def test_de_criação_de_folder(): nome_diretorio_auxiliar1 = 'mocks2' nome_diretorio_auxiliar2 = 'mocks3\\' path_criacao_folder = '\\'.join([paths_files.path_mocks(), nome_diretorio_auxiliar1, nome_diretorio_auxiliar2]) path_remocao_folder = '\\'.join([paths_files.path_mocks(), nome_diretorio_auxiliar1]) path_criacao_folder = InOut().ajuste_path(path_criacao_folder) path_remocao_folder = InOut().ajuste_path(path_remocao_folder) if not copy.criar_arquivos(path_criacao_folder): pytest.fail('Criacao de folder falhou') if not os.path.isdir(path_criacao_folder): pytest.fail('Folder nao foi criado') try: shutil.rmtree(path_remocao_folder) except Exception as ex: