Kada komprimirate cijeli direktorij (mapu) u zip datoteku u Pythonu, možete koristiti os.scandir() ili os.listdir() za kreiranje popisa datoteka i upotrijebiti modul zipfile da ih komprimirate, ali je lakše koristiti make_archive () shutil modula je lakši.
Osim zip-a, podržani su i drugi formati poput tar.
Za više informacija o komprimiranju i dekomprimiranju zip datoteka pomoću modula zipfile, pogledajte sljedeći članak.
Komprimirajte direktorij (mapu) u zip datoteku:shutil.make_archive()
Prvi argument, base_name, specificira naziv zip datoteke koja se stvara (bez ekstenzije), a drugi argument, format, specificira format arhive.
Za format argumenta može se odabrati sljedeće.
zip'
tar'
gztar'
bztar'
xztar'
Treći argument, root_dir, specificira stazu korijenskog direktorija direktorija koji treba komprimirati, a četvrti argument, base_dir, specificira put direktorija koji treba komprimirati u odnosu na root_dir. Obje su prema zadanim postavkama postavljene na trenutni direktorij.
Ako je base_dir izostavljen, cijeli će root_dir biti komprimiran.
data/temp
Na primjer, pretpostavimo da imamo direktorij sa sljedećom strukturom.
dir ├── dir_sub │ └── test_sub.txt └── test.txt
import shutil shutil.make_archive('data/temp/new_shutil', 'zip', root_dir='data/temp/dir')
New_shutil.zip komprimiran s gornjim postavkama koje izostavljaju base_dir bit će dekomprimiran na sljedeći način.
new_shutil ├── dir_sub │ └── test_sub.txt └── test.txt
Zatim, ako je direktorij u root_dir naveden za base_dir, bit će prikazano sljedeće.
shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')
New_shutil_sub.zip komprimiran s gornjim postavkama bit će dekomprimiran na sljedeći način.
dir_sub
└── test_sub.txt