Komprimovanie adresára (priečinka) do formátu zip alebo tar v jazyku Python

obchodné

Pri komprimovaní celého adresára (priečinka) do súboru zip v jazyku Python môžete použiť os.scandir() alebo os.listdir() na vytvorenie zoznamu súborov a použiť modul zipfile na ich komprimovanie, ale jednoduchšie je použiť make_archive () modulu shutil.

Okrem formátu zip sú podporované aj iné formáty, napríklad tar.

Ďalšie informácie o komprimovaní a dekomprimovaní súborov zip pomocou modulu zipfile nájdete v nasledujúcom článku.

Komprimovanie adresára (priečinka) do súboru zip:shutil.make_archive()

Prvý argument, base_name, určuje názov súboru zip, ktorý sa má vytvoriť (bez prípony), a druhý argument, format, určuje formát archívu.

Pre formát argumentu je možné vybrať nasledujúce možnosti.

  • 'zip'
  • 'tar'
  • 'gztar'
  • 'bztar'
  • 'xztar'

Tretí argument, root_dir, určuje cestu ku koreňovému adresáru adresára, ktorý sa má komprimovať, a štvrtý argument, base_dir, určuje cestu k adresáru, ktorý sa má komprimovať, vzhľadom na root_dir. Oba sú predvolene nastavené na aktuálny adresár.

Ak je base_dir vynechaný, komprimuje sa celý root_dir.

data/temp
Predpokladajme napríklad, že máme adresár s nasledujúcou štruktúrou.

dir
├── dir_sub
   └── test_sub.txt
└── test.txt
import shutil

shutil.make_archive('data/temp/new_shutil', 'zip', root_dir='data/temp/dir')

Súbor new_shutil.zip skomprimovaný pomocou vyššie uvedených nastavení s vynechaním adresára base_dir sa dekomprimuje takto.

new_shutil
├── dir_sub
   └── test_sub.txt
└── test.txt

Potom, ak je adresár v root_dir zadaný ako base_dir, zobrazí sa nasledovné.

shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')

Súbor new_shutil_sub.zip skomprimovaný pomocou vyššie uvedených nastavení sa dekomprimuje takto.

dir_sub
└── test_sub.txt
Copied title and URL