usar modulo tqdm com barra de progresso no terminal

This commit is contained in:
2025-04-28 11:12:13 +01:00
parent a62d2feba8
commit b09becb4fe

View File

@ -11,10 +11,10 @@ def listar_ficheiros(
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
"""
sha256_ficheiros: dict[str, str] = {}
caminho_origem = Path(origem)
if not caminho_origem.exists():
raise FileNotFoundError(f"Erro: a pasta '{origem}' não existe.")
@ -30,17 +30,17 @@ def listar_ficheiros(
]
# criar lista de ficheiros
ficheiros = []
for item in tqdm(
caminho_origem.rglob("*"), desc="A listar ficheiros", unit="ficheiro"
):
if item.is_file():
# filtro de ficheiros ocultos
if not incluir_ocultos and item.name.startswith("."):
continue
# filtro de extensoes
if extensoes and item.suffix.lower() not in extensoes:
continue
ficheiros.append(str(item))
itens = caminho_origem.rglob("*")
with tqdm(desc="A listar ficheiros", unit="ficheiro") as barra_progresso:
for item in itens:
if item.is_file():
if not incluir_ocultos and item.name.startswith("."):
continue
if extensoes and item.suffix.lower() not in extensoes:
continue
ficheiros.append(str(item))
barra_progresso.update(1)
return ficheiros
@ -51,7 +51,8 @@ def listar_ficheiros_unicos(
extensoes: list[str] | None = None,
) -> dict[str, list[str]]:
"""
Listar ficheiros unicos na pasta origem, agrupando caminhos por assinatura SHA256.
Listar ficheiros unicos na pasta origem, agrupando caminhos por assinatura
SHA256.
Retorna dicionario: { assinatura: [caminho1, caminho2, ...] }
"""
caminho_origem = Path(origem)
@ -70,19 +71,18 @@ def listar_ficheiros_unicos(
# dicionario de ficheiros com assinatura
ficheiros_por_assinatura: dict[str, list[str]] = {}
itens = caminho_origem.rglob("*")
for item in tqdm(
caminho_origem.rglob("*"), desc="A listar ficheiros únicos", unit="ficheiro"
):
if item.is_file():
# filtro ficheiros ocultos
if not incluir_ocultos and item.name.startswith("."):
continue
# filtro extenseos
if extensoes and item.suffix.lower() not in extensoes:
continue
assinatura = gerar_assinatura_SHA256_ficheiro(str(item))
ficheiros_por_assinatura.setdefault(
assinatura, []).append(str(item))
with tqdm(desc="A listar ficheiros", unit="ficheiro") as barra_progresso:
for item in itens:
if item.is_file():
if not incluir_ocultos and item.name.startswith("."):
continue
if extensoes and item.suffix.lower() not in extensoes:
continue
assinatura = gerar_assinatura_SHA256_ficheiro(str(item))
ficheiros_por_assinatura.setdefault(
assinatura, []).append(str(item))
barra_progresso.update(1)
return ficheiros_por_assinatura