← retour aux snippets

shutil: make_archive pour zipper un dossier

Créer une archive zip/tar d'un dossier sans dépendances externes.

python filesystem #shutil#archive#zip

objectif

Créer une archive zip/tar d’un dossier sans dépendances externes.

code minimal

import shutil, tempfile, pathlib

with tempfile.TemporaryDirectory() as tmp:
    root = pathlib.Path(tmp) / "data"
    (root / "sub").mkdir(parents=True)
    (root / "sub" / "f.txt").write_text("x", encoding="utf-8")
    out = shutil.make_archive(str(root), "zip", root_dir=str(root))
    print(out.endswith(".zip"))  # attendu: True

utilisation

import shutil
print(callable(shutil.make_archive))

variante(s) utile(s)

import shutil, tempfile, pathlib
with tempfile.TemporaryDirectory() as tmp:
    p = pathlib.Path(tmp) / "d"
    p.mkdir()
    shutil.make_archive(str(p), "gztar", root_dir=str(p))
    print(True)

notes

  • Formats supportés: zip, tar, gztar, bztar, xztar.
  • root_dir et base_dir contrôlent le contenu de l’archive.