From b3357f0d523cdcc3a4ab012c1fee025d2d24a12c Mon Sep 17 00:00:00 2001 From: Luis Rodrigues Date: Thu, 17 Apr 2025 12:00:54 +0100 Subject: [PATCH] =?UTF-8?q?cria=C3=A7=C3=A3o=20de=20fun=C3=A7=C3=A3o=20cop?= =?UTF-8?q?iar=5Fficheiros=5Fpara=5Fdestino()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- copier.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/copier.py b/copier.py index 397aef8..915d754 100644 --- a/copier.py +++ b/copier.py @@ -2,9 +2,51 @@ # Funções para copiar ficheiros para o destino organizado +from pathlib import Path +import organizer +import shutil + + def copiar_ficheiro(origem, destino): """ Copia o ficheiro da origem para o destino. Deve lidar com conflitos de nomes (duplicados). """ pass + + +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 + """ + 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)