adicionadas opções de incluir ficheiros ocultos e filtro por extensões
This commit is contained in:
@ -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
|
||||
|
||||
Reference in New Issue
Block a user