Komprimiranje direktorija (mape) u zip ili tar u Pythonu

Poslovanje

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
Copied title and URL