integrar função copiar_ficheiros_para_destino() para uso com versão GUI

This commit is contained in:
2025-05-02 21:06:40 +01:00
parent ee26905bcd
commit c5198725f1

View File

@ -10,6 +10,7 @@ import shutil
from tqdm import tqdm from tqdm import tqdm
from concurrent.futures import ThreadPoolExecutor, as_completed from concurrent.futures import ThreadPoolExecutor, as_completed
from modules.logger import logger from modules.logger import logger
from collections.abc import Callable
def copiar_ficheiro_individual( def copiar_ficheiro_individual(
@ -35,10 +36,12 @@ def copiar_ficheiro_individual(
try: try:
ficheiro_path = Path(ficheiro) ficheiro_path = Path(ficheiro)
if not ficheiro_path.exists(): if not ficheiro_path.exists():
logger.warning("Ficheiro '%s' não encontrado. A ignorar.", ficheiro) logger.warning(
"Ficheiro '%s' não encontrado. A ignorar.", ficheiro)
return return
if categorizar_data: if categorizar_data:
data_ficheiro = obter_data_ficheiro(ficheiro, usar_criacao=usar_criacao) data_ficheiro = obter_data_ficheiro(
ficheiro, usar_criacao=usar_criacao)
pasta_destino = criar_pasta_destino( pasta_destino = criar_pasta_destino(
str(base_destino), str(base_destino),
categorizar_por_tipo(ficheiro), categorizar_por_tipo(ficheiro),
@ -63,6 +66,7 @@ def copiar_ficheiros_para_destino(
formato_data: str = "%Y-%m-%d", formato_data: str = "%Y-%m-%d",
usar_threads: bool = True, usar_threads: bool = True,
max_workers: int = 8, max_workers: int = 8,
progresso_callback: Callable | None = None,
) -> None: ) -> None:
""" """
Copiar cada ficheiro na lista para o directório base, seguindo as regras de categorização Copiar cada ficheiro na lista para o directório base, seguindo as regras de categorização
@ -91,13 +95,18 @@ def copiar_ficheiros_para_destino(
for ficheiro in lista_ficheiros for ficheiro in lista_ficheiros
] ]
for _ in tqdm( for future in as_completed(futures):
as_completed(futures), if progresso_callback:
total=len(futures), progresso_callback()
desc="A copiar ficheiros ",
unit="ficheiro ", # codigo comentado para integrar a funcionalidade na interface gui
): # for _ in tqdm(
pass # as_completed(futures),
# total=len(futures),
# desc="A copiar ficheiros ",
# unit="ficheiro ",
# ):
# pass
else: else:
for ficheiro in tqdm( for ficheiro in tqdm(
lista_ficheiros, desc="A copiar ficheiros ", unit="ficheiro " lista_ficheiros, desc="A copiar ficheiros ", unit="ficheiro "