Kushinikiza saraka (folda) kwenye zip au tar kwenye Python

Biashara

Unapokandamiza saraka nzima (folda) kwenye faili ya zip kwenye Python, unaweza kutumia os.scandir() au os.listdir() kuunda orodha ya faili na kutumia moduli ya zipfile kuzikandamiza, lakini ni rahisi kutumia. make_archive () ya moduli ya shutil ni rahisi zaidi.

Mbali na zip, miundo mingine kama vile tar pia inatumika.

Kwa habari zaidi juu ya kubana na kubandua faili za zip kwa kutumia moduli ya zipfile, tafadhali rejelea makala ifuatayo.

Finyaza saraka (folda) kwenye faili ya zip:shutil.make_archive()

Hoja ya kwanza, base_name, inabainisha jina la faili ya zip litakaloundwa (bila kiendelezi), na hoja ya pili, umbizo, inabainisha umbizo la kumbukumbu.

Ifuatayo inaweza kuchaguliwa kwa umbizo la hoja.

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

Hoja ya tatu, root_dir, inabainisha njia ya saraka ya msingi ya saraka itakayobanwa, na hoja ya nne, base_dir, inabainisha njia ya saraka itakayobanwa kuhusiana na root_dir. Zote mbili zimewekwa kwenye saraka ya sasa kwa chaguo-msingi.

Ikiwa base_dir itaachwa, root_dir nzima itabanwa.

data/temp
Kwa mfano, tuseme tunayo saraka yenye muundo ufuatao.

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 iliyobanwa kwa mipangilio iliyo hapo juu ikiondoa base_dir itapunguzwa kama ifuatavyo.

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

Kisha, ikiwa saraka katika root_dir imeainishwa kwa base_dir, ifuatayo itaonyeshwa.

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

New_shutil_sub.zip iliyobanwa kwa mipangilio iliyo hapo juu itapunguzwa kama ifuatavyo.

dir_sub
└── test_sub.txt
Copied title and URL