Pri stiskanju celotnega imenika (mape) v datoteko zip v Pythonu lahko uporabite os.scandir() ali os.listdir(), da ustvarite seznam datotek in uporabite modul zipfile za njihovo stiskanje, vendar je lažje uporabiti make_archive () modula shutil.
Poleg formata zip so podprti tudi drugi formati, kot je tar.
Za več informacij o stiskanju in razpakiranju datotek zip z modulom zipfile glejte naslednji članek.
- Povezani članki:zipfile za stiskanje in raztiskanje datotek ZIP v Pythonu
Stiskanje imenika (mape) v datoteko zip:shutil.make_archive()
Prvi argument, base_name, določa ime datoteke zip, ki jo je treba ustvariti (brez končnice), drugi argument, format, pa določa format arhiva.
Za obliko argumenta lahko izberete naslednje možnosti.
'zip''tar''gztar''bztar''xztar'
Tretji argument, root_dir, določa pot do korenskega imenika imenika, ki ga je treba stisniti, četrti argument, base_dir, pa določa pot do imenika, ki ga je treba stisniti glede na root_dir. Oba sta privzeto nastavljena na trenutni imenik.
Če je base_dir izpuščen, se stisne celoten root_dir.
data/temp
Denimo, da imamo imenik z naslednjo strukturo.
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, stisnjen z zgornjimi nastavitvami in z izpuščenim imenikom base_dir, bo razpakiran na naslednji način.
new_shutil ├── dir_sub │ └── test_sub.txt └── test.txt
Če je za imenik base_dir določen imenik root_dir, se prikaže naslednje.
shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')
Novo_shutil_sub.zip, stisnjen z zgornjimi nastavitvami, bo razpakiran na naslednji način.
dir_sub
└── test_sub.txt

