From dae60e7622a4652c96306b5b0a4a66bb7c7a5cdd Mon Sep 17 00:00:00 2001 From: Luis Rodrigues Date: Tue, 22 Apr 2025 21:16:18 +0100 Subject: [PATCH] =?UTF-8?q?adicionadas=20op=C3=A7=C3=B5es=20de=20incluir?= =?UTF-8?q?=20ficheiros=20ocultos=20e=20filtro=20por=20extens=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/scanner.py | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/modules/scanner.py b/modules/scanner.py index 5b1713a..5ca3f2a 100644 --- a/modules/scanner.py +++ b/modules/scanner.py @@ -3,21 +3,28 @@ from pathlib import Path -def listar_ficheiros(origem: str = ".") -> list: +def listar_ficheiros( + origem: str = ".", incluir_ocultos: bool = True, extensoes: list[str] | None = None +) -> list: """ Percorrer recursivamente a pasta de origem e devolver lista de caminhos completos dos ficheiros. versão Pathlib """ - lista_caminhos_ficheiros: list = [] - try: - caminho_origem = Path(origem) - for item in caminho_origem.iterdir(): - if item.is_dir(): - lista_caminhos_ficheiros.extend(listar_ficheiros(str(item.resolve()))) - else: - lista_caminhos_ficheiros.append(str(item.resolve())) - except FileNotFoundError: - print(f"Erro: a pasta '{origem}' não existe.") - except PermissionError: - print(f"Erro: sem permissões para aceder a '{origem}'.") - return lista_caminhos_ficheiros + caminho_origem = Path(origem) + if not caminho_origem.exists(): + raise FileNotFoundError(f"Erro: a pasta '{origem}' não existe.") + if not caminho_origem.is_dir(): + raise NotADirectoryError( + f"Erro: o caminho '{origem}' não é um directório.") + ficheiros = [str(item) + for item in caminho_origem.rglob("*") if item.is_file()] + if not incluir_ocultos: + ficheiros = [f for f in ficheiros if not Path(f).name.startswith(".")] + if extensoes: + extensoes = [ + ext.lower() if ext.startswith(".") else f".{ext.lower()}" + for ext in extensoes + ] + ficheiros = [f for f in ficheiros if Path( + f).suffix.lower() in extensoes] + return ficheiros