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