Při kompresi celého adresáře (složky) do souboru zip v jazyce Python můžete použít os.scandir() nebo os.listdir() pro vytvoření seznamu souborů a použít modul zipfile pro jejich kompresi, ale jednodušší je použít make_archive () modulu shutil.
Kromě formátu zip jsou podporovány i další formáty, například tar.
Další informace o komprimaci a dekomprimaci souborů zip pomocí modulu zipfile naleznete v následujícím článku.
- Související články:zipfile pro komprimaci a dekomprimaci souborů ZIP v jazyce Python
Komprimace adresáře (složky) do souboru zip:shutil.make_archive()
První argument, base_name, určuje název vytvářeného souboru zip (bez přípony) a druhý argument, format, určuje formát archivu.
Pro formát argumentu lze zvolit následující možnosti.
'zip'
'tar'
'gztar'
'bztar'
'xztar'
Třetí argument, root_dir, určuje cestu ke kořenovému adresáři adresáře, který má být komprimován, a čtvrtý argument, base_dir, určuje cestu k adresáři, který má být komprimován, vzhledem k root_dir. Oba jsou ve výchozím nastavení nastaveny na aktuální adresář.
Pokud je base_dir vynechán, bude komprimován celý root_dir.
data/temp
Předpokládejme například, že máme adresář s následující strukturou.
dir ├── dir_sub │ └── test_sub.txt └── test.txt
import shutil shutil.make_archive('data/temp/new_shutil', 'zip', root_dir='data/temp/dir')
Soubor new_shutil.zip zkomprimovaný s výše uvedeným nastavením a s vynecháním souboru base_dir bude dekomprimován následujícím způsobem.
new_shutil ├── dir_sub │ └── test_sub.txt └── test.txt
Pakliže je pro base_dir zadán adresář v root_dir, zobrazí se následující.
shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')
Soubor new_shutil_sub.zip zkomprimovaný s výše uvedeným nastavením bude dekomprimován následujícím způsobem.
dir_sub
└── test_sub.txt