adicionado modulo tqdm para mostrar progresso na listagem de ficheiros
This commit is contained in:
@ -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
|
||||
|
||||
Reference in New Issue
Block a user