objectif
Fixer date_time pour des sorties zip déterministes.
code minimal
import zipfile, io
def build():
buf = io.BytesIO()
with zipfile.ZipFile(buf, "w", compression=zipfile.ZIP_DEFLATED, compresslevel=6) as z:
zi = zipfile.ZipInfo("a.txt", date_time=(1980,1,1,0,0,0))
z.writestr(zi, "x")
return buf.getvalue()
a, b = build(), build()
print(a == b) # attendu: True
utilisation
import zipfile, io
buf = io.BytesIO()
with zipfile.ZipFile(buf, "w", compression=zipfile.ZIP_STORED) as z:
zi = zipfile.ZipInfo("b.txt", date_time=(1980,1,1,0,0,0))
z.writestr(zi, "y")
print(len(buf.getvalue()) > 0)
variante(s) utile(s)
import zipfile
print(hasattr(zipfile, "ZipInfo"))
notes
- Définissez aussi l’ordre des entrées et le niveau de compression.
- Pour une reproductibilité totale, fixez contenu, nom, permissions, date_time.