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