Kataloogi (kausta) pakkimine zip- või tar-formaadis Pythonis

Äri

Terve kataloogi (kausta) pakkimisel zip-failiks Pythonis võite kasutada os.scandir() või os.listdir(), et luua failide nimekiri ja kasutada zipfile-moodulit nende pakkimiseks, kuid lihtsam on kasutada shutil-mooduli make_archive () on lihtsam.

Lisaks zipile toetatakse ka teisi formaate, näiteks tar.

Lisateavet zip-failide pakkimise ja lahtipakkimise kohta zipfile'i mooduli abil leiate järgmisest artiklist.

Kataloogi (kausta) pakkimine zip-failiks:shutil.make_archive()

Esimene argument, base_name, määrab loodava zip-faili nime (ilma laiendita) ja teine argument, format, määrab arhiivivormingu.

Argumentide formaadiks saab valida järgmist.

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

Kolmas argument, root_dir, täpsustab tihendatava kataloogi juurkataloogi tee ja neljas argument, base_dir, täpsustab tihendatava kataloogi tee root_dir'i suhtes. Mõlemad on vaikimisi määratud praegusele kataloogile.

Kui base_dir on välja jäetud, pakitakse kogu root_dir kokku.

data/temp
Oletame näiteks, et meil on kataloog järgmise struktuuriga.

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

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

Uus_shutil.zip, mis on pakitud ülaltoodud seadetega, jättes base_dir välja, dekompresseeritakse järgmiselt.

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

Seejärel, kui kataloogi root_dir jaoks on määratud base_dir, kuvatakse järgmist.

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

Ülaltoodud seadetega kokkupakitud new_shutil_sub.zip pakitakse lahti järgmiselt.

dir_sub
└── test_sub.txt
Copied title and URL