Kompresimi i një drejtorie (dosje) në një zip ose tar në Python

biznes

Kur kompresoni një direktori (dosje) të tërë në një skedar zip në Python, mund të përdorni os.scandir() ose os.listdir() për të krijuar një listë skedarësh dhe përdorni modulin zipfile për t’i kompresuar ato, por është më e lehtë për t’u përdorur make_archive () i modulit shutil është më i lehtë.

Përveç zip-it, mbështeten edhe formate të tjera si tar.

Për më shumë informacion mbi ngjeshjen dhe çkompresimin e skedarëve zip duke përdorur modulin zipfile, ju lutemi referojuni artikullit vijues.

Kompresoni një direktori (dosje) në një skedar zip:shutil.make_archive()

Argumenti i parë, emri_bazë, specifikon emrin e skedarit zip që do të krijohet (pa shtesë), dhe argumenti i dytë, formati, specifikon formatin e arkivit.

Më poshtë mund të zgjidhet për formatin e argumentit.

  • zip'
  • tar'
  • gztar'
  • bztar'
  • xztar'

Argumenti i tretë, root_dir, specifikon shtegun e direktoriumit rrënjë të drejtorisë që do të kompresohet, dhe argumenti i katërt, base_dir, specifikon shtegun e drejtorisë që do të kompresohet në lidhje me root_dir. Të dyja janë vendosur në drejtorinë aktuale si parazgjedhje.

Nëse base_dir hiqet, i gjithë root_dir do të kompresohet.

data/temp
Për shembull, supozoni se kemi një direktori me strukturën e mëposhtme.

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 i ngjeshur me cilësimet e mësipërme duke lënë jashtë bazën_dir do të dekompresohet si më poshtë.

new_shutil
├── dir_sub
   └── test_sub.txt
└── test.txt

Pastaj, nëse drejtoria në root_dir është specifikuar për base_dir, do të shfaqet sa vijon.

shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')

New_shutil_sub.zip i ngjeshur me cilësimet e mësipërme do të dekompresohet si më poshtë.

dir_sub
└── test_sub.txt