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.
- Kapcsolódó cikkek:zipfile a ZIP fájlok tömörítéséhez és kicsomagolásához Pythonban
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