adicionado modulo tqdm para mostrar progresso na listagem de ficheiros

This commit is contained in:
2025-04-27 12:51:30 +01:00
parent 860e5dbd39
commit 145dc94ecf

View File

@ -1,7 +1,7 @@
# scanner.py
# Funções para ler diretórios e listar ficheiros
from pathlib import Path
from tqdm import tqdm
from modules.utils import gerar_assinatura_SHA256_ficheiro
@ -21,19 +21,28 @@ def listar_ficheiros(
if not caminho_origem.is_dir():
raise NotADirectoryError(
f"Erro: o caminho '{origem}' não é um directório.")
# criar lista de ficheiros
ficheiros = [item for item in caminho_origem.rglob("*") if item.is_file()]
# filtro de ocultos
if not incluir_ocultos:
ficheiros = [f for f in ficheiros if not f.name.startswith(".")]
# filtro de extensoes
# se for passado filtro de extensoes, processar lista de extensoes para
# que cada extensão tenha o formato '.xxx'
if extensoes:
extensoes = [
ext.lower() if ext.startswith(".") else f".{ext.lower()}"
for ext in extensoes
]
ficheiros = [f for f in ficheiros if f.suffix.lower() in extensoes]
return [str(f) for f in 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))
return ficheiros
def listar_ficheiros_unicos(
@ -51,22 +60,29 @@ def listar_ficheiros_unicos(
if not caminho_origem.is_dir():
raise NotADirectoryError(
f"Erro: o caminho '{origem}' não é um directório.")
# criar lista de ficheiros
ficheiros = [item for item in caminho_origem.rglob("*") if item.is_file()]
# filtro de ocultos
if not incluir_ocultos:
ficheiros = [f for f in ficheiros if not f.name.startswith(".")]
# filtro de extensoes
# se for passado filtro de extensoes, processar lista de extensoes para
# que cada extensão tenha o formato '.xxx'
if extensoes:
extensoes = [
ext.lower() if ext.startswith(".") else f".{ext.lower()}"
for ext in extensoes
]
ficheiros = [f for f in ficheiros if f.suffix.lower() in extensoes]
# criar dicionario com assinaturas de ficheiros listados
assinatura_para_caminhos = {}
for ficheiro in ficheiros:
assinatura = gerar_assinatura_SHA256_ficheiro(str(ficheiro))
assinatura_para_caminhos.setdefault(
assinatura, []).append(str(ficheiro))
return assinatura_para_caminhos
# dicionario de ficheiros com assinatura
ficheiros_por_assinatura: dict[str, list[str]] = {}
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))
return ficheiros_por_assinatura