Script • Python drift og automatisering

Batch 8 Python: Hash rapport

Batch 8 Python: Hash rapport er et praktisk eksempel for Python drift og automatisering med fast ZIP-standard.

from pathlib import Path
import json
import hashlib

def sha256(path: Path) -> str:
    digest = hashlib.sha256()
    with path.open("rb") as handle:
        for chunk in iter(lambda: handle.read(65536), b""):
          
Weboracle
19.07.20260 visningerPython

Batch 8 Python: Hash rapport er et praktisk eksempel for Python drift og automatisering med fast ZIP-standard.

Batch 8 Python: Hash rapport

Batch 8 Python: Hash rapport er et praktisk eksempel for Python drift og automatisering med fast ZIP-standard.

Hva scriptet gjør

Scriptet gir et lite, praktisk eksempel som kan brukes i WEBoracle sitt scriptbibliotek. Det er laget for å være lett å lese, lett å teste og enkelt å tilpasse.

Hvordan det bør brukes

Last ned ZIP-pakken, les forklaring og user manual, og test filen i et lukket miljø før den tas videre. Endre stier, klassenavn og tekst slik at det passer prosjektet.

Kontrollpunkter

  • Kontroller at hovedfilen finnes.
  • Kontroller at credits, forklaring og manual følger med.
  • Kontroller at eksempelet virker med egne data.
  • Kontroller at det ikke overskriver eksisterende arbeid.

Videre arbeid

Dette er et startpunkt. Når løsningen er testet, kan den bygges ut med flere valg, bedre rapportering eller tettere integrasjon mot WEBoracle sine egne oversikter.

Kode

from pathlib import Path
import json
import hashlib

def sha256(path: Path) -> str:
    digest = hashlib.sha256()
    with path.open("rb") as handle:
        for chunk in iter(lambda: handle.read(65536), b""):
            digest.update(chunk)
    return digest.hexdigest()

def collect(folder: str) -> list[dict]:
    root = Path(folder)
    rows = []
    for path in sorted(root.rglob("*")):
        if path.is_file():
            rows.append({
                "path": path.relative_to(root).as_posix(),
                "bytes": path.stat().st_size,
                "sha256": sha256(path)
            })
    return rows

if __name__ == "__main__":
    result = collect(".")
    print(json.dumps({"topic": "hash rapport", "files": result}, indent=2, ensure_ascii=False))