← retour aux snippets

zipfile: écrire/lire avec compression et ZIP64

Créer une archive zip compressée et la relire (ZIP64 activé).

python archive #zipfile#zip#zip64

objectif

Créer une archive zip compressée et la relire (ZIP64 activé).

code minimal

import zipfile, tempfile, pathlib
with tempfile.TemporaryDirectory() as tmp:
    root = pathlib.Path(tmp); f = root/"a.txt"; f.write_text("x", encoding="utf-8")
    zpath = root/"out.zip"
    with zipfile.ZipFile(zpath, "w", compression=zipfile.ZIP_DEFLATED, allowZip64=True) as z:
        z.write(f, arcname="a.txt")
    with zipfile.ZipFile(zpath) as z:
        print(z.read("a.txt") == b"x")  # attendu: True

utilisation

import zipfile, io
buf = io.BytesIO()
with zipfile.ZipFile(buf, "w", compression=zipfile.ZIP_STORED) as z:
    z.writestr("b.txt", "ok")
print(buf.getbuffer().nbytes > 0)

variante(s) utile(s)

import zipfile, tempfile, pathlib
with tempfile.TemporaryDirectory() as tmp:
    p = pathlib.Path(tmp)/"z.zip"
    with zipfile.ZipFile(p, "w") as z: z.writestr("x/y.txt", "1")
    with zipfile.ZipFile(p, "r") as z: print("x/y.txt" in z.namelist())

notes

  • ZIP_DEFLATED compresse; ZIP_STORED garde brut.
  • allowZip64 gère >4 Go si nécessaire.