Zipping yra elegantiškas būdas suspausti kelis failus ir sujungti juos į vieną. Taip sutaupoma ne tik vietos saugykloje, bet ir pralaidumas perduodant failą tinklu. Viena geriausių „zip“ savybių yra ta, kad ji veikia visose pagrindinėse platformose: „Windows“, „Linux“ ir „Mac“.
„Zip“ naudoja be nuostolių glaudinimą, kad išsaugotų visus duomenis, kai juos suspaudžia ir išspaudžia. Taip pat galite užšifruoti ir iššifruoti ZIP failus.
Turėdami tiek daug funkcijų, kurias reikia ištirti, sužinokite, kaip galite skaityti, supakuoti ir išpakuoti failus naudodami Python zipfile modulį.
Kas yra „zipfile“ modulis?
Galite naudoti standartinį zipfile modulį, kad galėtumėte manipuliuoti ZIP failais naudodami Python. Naudodami šį modulį galite atidaryti ir skaityti ZIP failus, skaityti jų metaduomenis, sukurti ZIP failą, jį suspausti ir išpakuoti failus. Galimi trys suspaudimo būdai: Deflate, Bzip2 ir LZMA.
Vienas iš dalykų, kurių moduliui trūksta, yra galimybė tvarkyti kelių diskų failus, tačiau jis tvarko ZIP64 plėtinį. Jis taip pat gali iššifruoti ZIP archyvus, bet ne užšifruoti. Naudodami zip failo modulį galite gauti ZIP failo metaduomenis, pvz., modifikavimo datą ir laiką. Taip pat galite gauti išsamią informaciją, pvz., operacinę sistemą, naudojamą kuriant failą, zip versiją ir failo dydį suglaudintu ir nesuspaustu formatu.
Kaip supakuoti failus naudojant Python
Galite supakuoti kelis failus į vieną archyvą naudodami Python zipfile modulį. Importuoti ZipFile modulis iš zip failas paketą reikiamoms zip operacijoms atlikti. Taip pat importuoti į os modulis failams pasirinkti ir išsaugoti.
Apibrėžkite funkciją get_all_file_paths(). Jis turėtų priimti katalogo parametrą, kuriame yra kelias į aplanką, kuriame yra supakuoti failai.
Inicijuokite tuščią sąrašą, kuriame bus saugomas failų kelių sąrašas. Norėdami gauti visą tikslinio katalogo turinį naudodami os.walk() funkcija. Ši funkcija nuskaito failų pavadinimus katalogų medyje judant iš viršaus į apačią arba iš apačios į viršų. Kiekvienam katalogui funkcija grąžina tris eilutes, kuriose yra šaknis, dirs ir failai.
Šaknis yra eilutė, kurioje yra visas kelias į katalogą. Į katalogų sąrašą įtraukti visi kataloge esantys pakatalogiai. Failų sąraše yra visi kataloge esantys failai.
Ciklo viduje paskelbkite kitą ciklas, kad kartotų failų sąrašą. Naudoti os.path.join() funkcija sujungti katalogo pavadinimą su kiekvienu failo pavadinimu ir sudaryti visą kelią. Tada pridėkite šį visą failo pavadinimą prie anksčiau sukurto sąrašo. Kai ši operacija bus baigta, grąžinkite failų kelių sąrašą.
# importuoti reikiamus modulius
iš zip failas importuoti ZipFile
importuoti os# sukurkite funkciją, kad gautumėte visus failų kelius
defgauti_visi_failo_keliai(katalogas):
# inicijuojamas tuščias sąrašas, kad būtų išsaugoti failų keliai
failo_keliai = []# naršyti po failus
dėlšaknis, katalogai, failusinos.vaikščioti(katalogas):
failo pavadinimui failuose:
# sujunkite šaknį ir failo pavadinimą, kad sukurtumėte visą failo kelią
failo kelias = os.path.join (šaknis, failo pavadinimas)
failo_keliai.pridėti(bylos kelias)
# grąžinami visi failo keliai
grąžinti failo_keliai
Išsaugokite kelią į aplanką, kuriame yra failai, kuriuos norite supakuoti, kintamajame, vadinamame katalogu. Iškvieskite funkciją, get_all_file_paths() kurį sukūrėte anksčiau, ir išsaugokite vertę, kurią ji grąžina failo_keliai.
Rodyti pranešimą vartotojui, kad jis žinotų, kad tai yra failai, kuriuos programa suglaudins. Pakartokite failus ir parodykite jų pavadinimus.
Perduokite pavadinimą, kurį norite turėti savo zip faile, kartu su specifikacija, kad programa grąžina rašomą failą naudodama teiginį su, kad tvarkytų išimtis. Pakartokite kiekvieną failą ir naudokite funkciją Write() per įrašomąjį failą į ZIP failą.
Kai operacija bus baigta, išveskite pranešimą, paaiškinantį, kad programa sėkmingai suglaudino visus failus.
# kelias į aplanką, kurį norite supakuoti
katalogas = './pythonzip'# skambinimo funkcija, kad gautumėte visus failų kelius kataloge
failo_keliai = gauti_visi_failo_keliai (katalogas)# spausdinamas visų failų, kuriuos norite supakuoti, sąrašas
spausdinti(„Failų, kurie bus supakuoti, sąrašas:“)failo_pavadinimui failo_keliuose:
spausdinti(failo pavadinimas)# failų rašymas į ZIP failą
su ZipFile(„mano_failas.zip“, "w") kaip zip:
# parašykite kiekvieną failą po vieną
failui, esančiam file_paths:
užtrauktukas.rašyk(failą)
spausdinti("Visi failai yra supakuoti!")
Kaip išpakuoti failus naudojant Python
Failų išpakavimas naudojant zipfile modulį yra daug lengvesnis. Importuoti zip failas paketą iš ZipFile modulį ir kintamajame išsaugokite zip failo, kurį norite išskleisti, pavadinimą. Naudokite teiginį su, kad tvarkytumėte išimtis ir atidarytumėte failą, kurį norite išskleisti skaitymo režimu. Naudoti spausdinimo vadovas () funkcija, rodanti zip failų turinį.
Parodykite eigos pranešimą, kad ištraukiate failus ir naudokite išarchyvuoti viską() funkcija, kad ištrauktumėte ZIP failo turinį į dabartinį darbo katalogą. Arba galite įtraukti kelio parametrą, kad pakeistumėte kelią, kuriuo programa ištraukia failus.
Rodyti pranešimą naudodami spausdinti pareiškimas apie operacijos užbaigimą.
# importuoti reikiamus modulius
iš zip failas importuoti ZipFile# perduoti zip failo, kurį norite išskleisti, pavadinimą
failo_vardas = "extract.zip"# zip failo atidarymas skaitymo režimu
su ZipFile (failo_pavadinimas, "r") kaip zip:
# rodyti ZIP failo turinį
užtrauktukas.printdir()
# išskleisti visus failus
spausdinti(„Ištrauka vykdoma...“)
užtrauktukas.išarchyvuoti viską()
spausdinti("Visi failai išskleisti!")
Daugiau apie ZIP failus
Zip failai įgijo didelį populiarumą ir yra naudojami jau dešimtmečius. Populiariose svetainėse, tokiose kaip „GitHub“ ir „Google“ diskas, galite atsisiųsti failų kolekciją kaip ZIP archyvą. Zip programa suglaudina failų rinkinį į vieną paketą. Tai prieštarauja tokiam įrankiui kaip tar, kuris supakuoja failus, bet jų nesuglaudina.
Jei norite užšifruoti failus naudodami efektyvesnį algoritmą, geriausia naudoti RAR failus. RAR naudoja AES-128 algoritmą, kuris yra geresnis nei zip failų naudojamas defliacijos algoritmas. Galiausiai pasirinkite tą, kuris geriausiai atitinka jūsų poreikius.