Python дээр лавлах (хавтас) zip эсвэл tar руу шахаж байна

Бизнес эрхэлдэг

Python дээр бүх лавлах (хавтас)-ыг zip файл болгон шахахдаа os.scandir() эсвэл os.listdir() ашиглан файлуудын жагсаалтыг үүсгэж, zipfile модулийг ашиглан шахаж болно, гэхдээ ашиглахад илүү хялбар байдаг. shutil модулийн make_archive () нь илүү хялбар байдаг.

Зипээс гадна tar гэх мэт бусад форматуудыг бас дэмждэг.

Zipfile модулийг ашиглан зип файлуудыг шахах, задлах талаар дэлгэрэнгүй мэдээллийг дараах нийтлэлээс авна уу.

Зааврыг (хавтас) zip файл болгон шахах:shutil.make_archive()

Эхний аргумент нь үндсэн_нэр нь үүсгэх зип файлын нэрийг (өргөтгөлгүйгээр), хоёр дахь аргумент болох формат нь архивын форматыг зааж өгдөг.

Аргументийн форматын хувьд дараахь зүйлийг сонгож болно.

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

Гурав дахь аргумент болох root_dir нь шахагдах директорын үндсэн директорийн замыг, дөрөв дэх аргумент болох base_dir нь 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