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.