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