zipfile нь Python дээр ZIP файлуудыг шахаж, задлах

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

Python стандарт номын сангийн zipfile модулийг ZIP файл болгон шахаж, ZIP файлыг задлахад ашиглаж болно. Энэ нь стандарт номын санд багтсан тул нэмэлт суулгах шаардлагагүй.

Дараах агуулгыг тайлбарлав.

  • Олон файлыг ZIP файл болгон шахах
  • Одоо байгаа ZIP файлд шинэ файл нэмнэ үү
  • Директор (хавтас) -ыг ZIP файл болгон шахах
  • Нууц үгээр ZIP файл руу шахагдсан
  • ZIP файлын агуулгыг шалгана уу.
  • ZIP файлын агуулгыг бүхэлд нь задлах ( задлах).
  • ZIP файлын агуулгыг сонгоод задлаарай.

Олон файлыг ZIP файл болгон шахах

ZipFile объект үүсгээд write() аргыг ашиглан шахахыг хүссэн файлуудаа нэмнэ үү.

Шинэ ZIP файл үүсгэхийн тулд ZipFile объектын үүсгэгчийн эхний аргумент болгон үүсгэх ZIP файлын замыг, хоёр дахь аргументыг дараах байдлаар зааж өгнө үү.w'

Үүнээс гадна шахалтын аргыг гурав дахь аргумент болгон тодорхойлж болно.

  • zipfile.ZIP_STORED:Хэд хэдэн файлыг шахахгүйгээр нэгтгэж болно (өгөгдмөл)
  • zipfile.ZIP_DEFLATED:Ердийн ZIP шахалт (zlib модуль шаардлагатай)
  • zipfile.ZIP_BZIP2:BZIP2 шахалт (bz2 модуль шаардлагатай)
  • zipfile.ZIP_LZMA:LZMA шахалт (lzma модуль шаардлагатай)

BZIP2 болон LZMA нь илүү өндөр шахалтын харьцаатай (бага хэмжээсийг шахаж болно), гэхдээ шахахад шаардагдах хугацаа илүү урт байдаг.

write() аргад эхний аргументын файлын нэр бүхий файлыг хоёр дахь аргумент arcname бүхий ZIP файлд бичдэг. Arcname-г орхигдуулсан тохиолдолд файлын нэрийг байгаагаар нь ашиглана. arcname нь мөн лавлах бүтцийг зааж өгч болно.

ZipFile объектыг close() аргаар хаах хэрэгтэй, гэхдээ хэрэв та with хэллэгийг ашиглавал блок дууссаны дараа автоматаар хаагдах болно.

import zipfile

with zipfile.ZipFile('data/temp/new_comp.zip', 'w', compression=zipfile.ZIP_DEFLATED) as new_zip:
    new_zip.write('data/temp/test1.txt', arcname='test1.txt')
    new_zip.write('data/temp/test2.txt', arcname='zipdir/test2.txt')
    new_zip.write('data/temp/test3.txt', arcname='zipdir/sub_dir/test3.txt')

write() аргын compress_type аргументыг зааж өгснөөр файл бүрийн шахалтын аргыг сонгох боломжтой.

with zipfile.ZipFile('data/temp/new_comp_single.zip', 'w') as new_zip:
    new_zip.write('data/temp/test1.txt', arcname='test1.txt', compress_type=zipfile.ZIP_DEFLATED)
    new_zip.write('data/temp/test2.txt', arcname='zipdir/test2.txt')
    new_zip.write('data/temp/test3.txt', arcname='zipdir/sub_dir/test3.txt')

Одоо байгаа ZIP файлд шинэ файл нэмнэ үү

Одоо байгаа зип файлд шинэ файл нэмэхийн тулд ZipFile объектыг үүсгэх үед үүсгэгчийн эхний аргументыг одоо байгаа зип файлын замд тохируулна уу. Мөн хоёр дахь аргументийн горимыг дараах байдлаар тохируулна уу.a'

Дараа нь дээрх жишээн дээрх шиг write() аргыг ашиглан файлаа нэмнэ үү.

with zipfile.ZipFile('data/temp/new_comp.zip', 'a') as existing_zip:
    existing_zip.write('data/temp/test4.txt', arcname='test4.txt')

Директор (хавтас) -ыг ZIP файл болгон шахах

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

Дараах нийтлэлийг үзнэ үү.

Нууц үгээр ZIP файл руу шахагдсан

Zipfile модуль нь нууц үгээр хамгаалагдсан ZIP файл үүсгэхийг зөвшөөрдөггүй. Хэрэв та файлыг нууц үгээр хамгаалагдсан зип файл болгон шахахыг хүсвэл гуравдагч талын pyminizip номын санг ашиглана уу.

Нууц үгээр хамгаалагдсан ZIP файлуудыг задлах ажиллагааг zipfile модулийн тусламжтайгаар хийж болно гэдгийг анхаарна уу (доороос үзнэ үү).

ZIP файлын агуулгыг шалгана уу.

Та одоо байгаа ZIP файлын агуулгыг шалгаж болно.

Байгуулагч дахь эхний аргументын файлыг одоо байгаа зип файлын зам руу, хоёр дахь аргументын горимыг ‘r’ болгож ZipFile объект үүсгэнэ үү. Өгөгдмөл нь ‘r’ тул горимын аргументыг орхигдуулж болно.

Та архивлагдсан файлуудын жагсаалтыг авахын тулд ZipFile объектын namelist() аргыг ашиглаж болно.

with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
    print(existing_zip.namelist())
# ['test1.txt', 'zipdir/test2.txt', 'zipdir/sub_dir/test3.txt', 'test4.txt']

ZIP файлын агуулгыг бүхэлд нь задлах ( задлах).

ZIP файлын агуулгыг задлахын тулд дээрх жишээн дээрх шиг үүсгэгч дэх эхний аргумент файлыг одоо байгаа ZIP файлын зам болгон, хоёр дахь аргумент горимыг ‘r’ хэлбэрээр агуулсан ZipFile объект үүсгэнэ үү. Уг горимын аргумент нь ‘r’ байх тул орхигдуулж болно.

ZipFile объектын extractall() арга нь ZIP файлын агуулгыг бүхэлд нь задалдаг (шахдаг). Эхний аргумент болох зам нь задлах директорийн замыг заана. Хэрэв үүнийг орхигдуулсан бол файлуудыг одоогийн директор руу задлах болно.

with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
    existing_zip.extractall('data/temp/ext')

Нууц үг бүхий ZIP файлыг extractall() аргын pwd аргумент болгон нууц үгээ зааж өгснөөр задалж болно.

with zipfile.ZipFile('data/temp/new_comp_with_pass.zip') as pass_zip:
    pass_zip.extractall('data/temp/ext_pass', pwd='password')

ZIP файлын агуулгыг сонгоод задлаарай.

Хэрэв та зөвхөн тодорхой файлуудыг задалж задлахыг хүсвэл extract() аргыг ашиглаарай.

Extract() аргын эхний аргумент нь задлах файлын нэр, хоёр дахь аргументын зам нь задлах директорийн зам юм. Хэрэв замын аргументыг орхигдуулсан бол файлыг одоогийн директор руу задлах болно. Задлах файлын нэр нь ZIP файлд хадгалагдсан директор руу очих замыг агуулсан байх ёстой.

with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
    existing_zip.extract('test1.txt', 'data/temp/ext2')

Extractall() аргын нэгэн адил extract() арга нь нууц үгийг pwd аргумент болгон зааж өгөх боломжийг олгодог.

with zipfile.ZipFile('data/temp/new_comp_with_pass.zip') as pass_zip:
    pass_zip.extract('test1.txt', 'data/temp/ext_pass2', pwd='password')
Copied title and URL