Jump to content

Minha barra de progresso só é atualizada quando o processo termina


cmoreti

Postagens Recomendadas

Pessoal, minha barra de progresso só é atualizada quando o processo termina, tanto para criar quanto para atualizar a pasta: 

Podem ajudar por favor?


    def atualizar_repositorio_git(usuario, senha, caminhoGit):
        senha_codificada = quote(senha, safe='')
        url_repo = f'http://{usuario}:{senha_codificada}@azuredevops:MeuCaminhoURL/_git/conversor'
        caminhoLog = os.path.join(caminhoGit, 'clone_log.txt')

        # Verificar se o diretório de destino já existe e não está vazio
        if os.path.exists(caminhoGit) and os.listdir(caminhoGit):
            print("Diretório de destino já existe e não está vazio.")
            return

        # Executar o comando de clone do repositório
        comando_git = f"git clone {url_repo} {caminhoGit}"

        # Executar o comando com a barra de progresso
        print("Atualizando Repositório:")
        with tqdm(total=100, ncols=80, unit="%") as pbar:
            process = subprocess.Popen(comando_git, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)

            for line in process.stdout:
                output = line.decode("utf-8").strip()
                if "Receiving objects" in output:
                    percentage = int(output.split()[0])
                    pbar.update(percentage - pbar.n)

            pbar.close()

        if process.returncode == 0:
            print("Repositório atualizado com sucesso.")
        else:
            print("Erro ao atualizar o repositório.")
            print("Erro:", process.stdout.read().decode("utf-8"))

        print(f"Atualização do repositório concluída. Log salvo em: {caminhoLog}")

 

Obrigado

Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed

Olá @cmoreti tudo bem?

Não conheço muito sobre esse processo de barra de progresso. Mas vou dar uma visão aqui que talvez possa lhe ajudar.

Pelo que entendi olhando brevemente seu código, e essa parte encarregada de realizar a atualização da barra de progresso correto ?

for line in process.stdout:
  output = line.decode("utf-8").strip()
  if "Receiving objects" in output:
    percentage = int(output.split()[0])
    pbar.update(percentage - pbar.n)

O que eu recomendo é verificar essa lógica. Coloca alguns prints para ter uma noção da execução desta parte, para ver se de fato está sendo executado e se está passando por todas as "etapas" que você precisa.

A partir dai podemos ter uma noção se de fato o código está passando por todas as partes que deveria corretamente.

 

Peço que realize esses testes e comenta se deu certo ou não, com base nisso posso procurar outra forma de lhe ajudar caso necessário. 👍

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...