# copier.py # Funções para copiar ficheiros para o destino organizado 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( lista_ficheiros: list[str], base_destino: str, categorizar_data: bool = False, usar_criacao: bool = False, formato_data: str = "%d-%m-%Y", ) -> None: """ Copiar cada ficheiro na lista para o directório base, seguindo as regras de categorização argumentos: lista_ficheiros (list[str]) -> lista com o caminho dos ficheiros a serem copiados base_destino (str) -> directorio base no qual serão criados os novos directórios com base nas regras de categorização categorizar_data (bool) -> flag para activar categorização por data (defeito: False) usar_criacao (bool) -> usar data de criação (defeito: False usar data de modificacao) formato_data (str) -> formato de data para nome dos subdirectórios (defeito: '%d-%m-%Y') retorna: None """ 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)