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