Пры сцісканні цэлага каталога (папкі) у zip-файл у Python, вы можаце выкарыстоўваць os.scandir() або os.listdir() для стварэння спісу файлаў і выкарыстоўваць модуль zipfile для іх сціску, але гэта прасцей у выкарыстанні make_archive () модуля shutil прасцей.
У дадатак да zip, іншыя фарматы, такія як tar таксама падтрымліваюцца.
Для атрымання дадатковай інфармацыі аб сціску і распакаванні zip-файлаў з дапамогай модуля zipfile, калі ласка, звярніцеся да наступнага артыкула.
- Падобныя артыкулы:zip-файл для сціскання і распакавання ZIP-файлаў у Python
Сціснуць каталог (папку) у файл zip:shutil.make_archive()
Першы аргумент, base_name, вызначае назву файла zip, які будзе створаны (без пашырэння), а другі аргумент, фармат, вызначае фармат архіва.
Для фармату аргументу можна выбраць наступнае.
zip'
tar'
gztar'
bztar'
xztar'
Трэці аргумент, root_dir, вызначае шлях да каранёвага каталога каталога, які трэба сціскаць, а чацвёрты аргумент, base_dir, вызначае шлях да каталога, які трэба сціскаць, адносна каранёвага каталога. Абодва ўсталёўваюцца ў бягучы каталог па змаўчанні.
Калі base_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
Затым, калі каталог у каранёвай_каталогі пазначаны для 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