Egy könyvtár (mappa) tömörítése zip vagy tar formátumba Python nyelven

Üzleti

Egy teljes könyvtár (mappa) zip-fájlba tömörítésekor Pythonban az os.scandir() vagy az os.listdir() segítségével létrehozhat egy listát a fájlokból, és a zipfile modullal tömörítheti őket, de egyszerűbb a shutil modul make_archive () funkcióját használni.

A zip mellett más formátumok, például a tar is támogatottak.

A zip fájlok zipfile modul segítségével történő tömörítéséről és kicsomagolásáról a következő cikkben olvashat bővebben.

Egy könyvtár (mappa) zip fájlba tömörítése:shutil.make_archive()

Az első argumentum, a base_name, a létrehozandó zip-fájl nevét adja meg (kiterjesztés nélkül), a második argumentum, a format, pedig az archiválási formátumot.

Az argumentum formátuma a következők szerint választható.

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

A harmadik argumentum, a root_dir, a tömörítendő könyvtár gyökérkönyvtárának elérési útvonalát adja meg, a negyedik argumentum, a base_dir, pedig a tömörítendő könyvtár elérési útvonalát adja meg a root_dir-hez képest. Alapértelmezés szerint mindkettő az aktuális könyvtárra van beállítva.

Ha a base_dir nincs megadva, a teljes root_dir tömörítésre kerül.

data/temp
Tegyük fel például, hogy van egy könyvtárunk a következő szerkezettel.

dir
├── dir_sub
   └── test_sub.txt
└── test.txt
import shutil

shutil.make_archive('data/temp/new_shutil', 'zip', root_dir='data/temp/dir')

A fenti beállításokkal tömörített new_shutil.zip a base_dir kihagyásával a következőképpen fog kicsomagolódni.

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

Ezután, ha a root_dir könyvtárat adjuk meg a base_dir-hez, a következő jelenik meg.

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

A fenti beállításokkal tömörített new_shutil_sub.zip a következőképpen lesz kicsomagolva.

dir_sub
└── test_sub.txt