adicionadas opções de incluir ficheiros ocultos e filtro por extensões

This commit is contained in:
2025-04-22 21:16:18 +01:00
parent 026dd5474a
commit dae60e7622

View File

@ -3,21 +3,28 @@
from pathlib import Path 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. Percorrer recursivamente a pasta de origem e devolver lista de caminhos completos dos ficheiros.
versão Pathlib versão Pathlib
""" """
lista_caminhos_ficheiros: list = [] caminho_origem = Path(origem)
try: if not caminho_origem.exists():
caminho_origem = Path(origem) raise FileNotFoundError(f"Erro: a pasta '{origem}' não existe.")
for item in caminho_origem.iterdir(): if not caminho_origem.is_dir():
if item.is_dir(): raise NotADirectoryError(
lista_caminhos_ficheiros.extend(listar_ficheiros(str(item.resolve()))) f"Erro: o caminho '{origem}' não é um directório.")
else: ficheiros = [str(item)
lista_caminhos_ficheiros.append(str(item.resolve())) for item in caminho_origem.rglob("*") if item.is_file()]
except FileNotFoundError: if not incluir_ocultos:
print(f"Erro: a pasta '{origem}' não existe.") ficheiros = [f for f in ficheiros if not Path(f).name.startswith(".")]
except PermissionError: if extensoes:
print(f"Erro: sem permissões para aceder a '{origem}'.") extensoes = [
return lista_caminhos_ficheiros 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