Python-да каталогты (қалтаны) zip немесе tar файлына қысу

Іскерлік

Python-да бүкіл каталогты (қалтаны) zip файлына сығу кезінде файлдар тізімін жасау үшін os.scandir() немесе os.listdir() пайдалана аласыз және оларды қысу үшін zipfile модулін пайдалана аласыз, бірақ оны пайдалану оңайырақ. shutil модулінің make_archive () оңайырақ.

Zip файлынан басқа, tar сияқты басқа пішімдерге де қолдау көрсетіледі.

Zipfile модулін пайдаланып zip файлдарын қысу және ашу туралы қосымша ақпарат алу үшін келесі мақаланы қараңыз.

Каталогты (қалтаны) zip файлына қысыңыз:shutil.make_archive()

Бірінші аргумент, base_name, жасалатын zip файлының атын (кеңейтімсіз) көрсетеді, ал екінші аргумент, формат мұрағат пішімін көрсетеді.

Аргумент пішімі үшін келесіні таңдауға болады.

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

Үшінші аргумент, root_dir, қысылатын каталогтың түбірлік каталогының жолын көрсетеді, ал төртінші аргумент, base_dir, root_dir-ге қатысты қысылатын каталогтың жолын көрсетеді. Екеуі де әдепкі бойынша ағымдағы каталогқа орнатылады.

Негізгі_директор өткізілмесе, барлық түбір_директоры қысылады.

data/temp
Мысалы, бізде келесі құрылымы бар каталог бар делік.

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 файлы келесідей ашылады.

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

Содан кейін, root_dir каталогындағы каталог base_dir үшін көрсетілген болса, төмендегілер көрсетіледі.

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

Жоғарыдағы параметрлермен қысылған new_shutil_sub.zip файлы келесідей ашылады.

dir_sub
└── test_sub.txt
Copied title and URL