From a62d2feba850ecdd47ae586a1942e464dd140570 Mon Sep 17 00:00:00 2001 From: Luis Rodrigues Date: Mon, 28 Apr 2025 10:36:12 +0100 Subject: [PATCH] =?UTF-8?q?aplicar=20barra=20de=20progresso=20durante=20co?= =?UTF-8?q?pia=20de=20ficheiros=20com=20m=C3=B3dulo=20tqdm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/copier.py | 57 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/modules/copier.py b/modules/copier.py index a95e670..e76fbf4 100644 --- a/modules/copier.py +++ b/modules/copier.py @@ -1,8 +1,13 @@ # copier.py # Funções para copiar ficheiros para o destino organizado -from . import organizer +from modules.organizer import ( + obter_data_ficheiro, + criar_pasta_destino, + categorizar_por_tipo, +) from pathlib import Path import shutil +from tqdm import tqdm def copiar_ficheiros_para_destino( @@ -25,18 +30,38 @@ def copiar_ficheiros_para_destino( retorna: None """ - for ficheiro in lista_ficheiros: - if not Path(ficheiro).is_file(): - print(f"Aviso: '{ficheiro}' não existe ou não é um ficheiro.") - continue - categoria = organizer.categorizar_por_tipo(ficheiro) - data = ( - organizer.obter_data_ficheiro(ficheiro, usar_criacao) - if categorizar_data - else None - ) - pasta_destino = organizer.criar_pasta_destino( - base_destino, categoria, data, formato_data - ) - destino_final = pasta_destino / Path(ficheiro).name - shutil.copy2(ficheiro, destino_final) + destino_path = Path(base_destino) + with tqdm( + total=len(lista_ficheiros), desc="A copiar ficheiros ", unit="ficheiro " + ) as barra_progresso: + for ficheiro in lista_ficheiros: + ficheiro_path = Path(ficheiro) + if not ficheiro_path.exists(): + print(f"Aviso: ficheiro '{ + ficheiro}' não encontrado. A ignorar.") + barra_progresso.update(1) + continue + + if categorizar_data: + data_ficheiro = obter_data_ficheiro( + ficheiro, usar_criacao=usar_criacao) + pasta_destino = criar_pasta_destino( + str(destino_path), + categorizar_por_tipo(ficheiro), + data_ficheiro, + formato_data, + ) + else: + pasta_destino = criar_pasta_destino( + str(destino_path), + categorizar_por_tipo(ficheiro), + ) + + destino_ficheiro = pasta_destino / ficheiro_path.name + + try: + shutil.copy2(ficheiro_path, destino_ficheiro) + except Exception as e: + print(f"Erro a copiar '{ficheiro}': {e}") + + barra_progresso.update(1)