Zippimine on elegantne viis mitme faili tihendamiseks ja nende üheks ühendamiseks. See säästab faili üle võrgu edastamisel mitte ainult salvestusruumi, vaid ka ribalaiust. Zipi üks parimaid omadusi on see, et see töötab kõigil suurematel platvormidel: Windows, Linux ja Mac.
Zip kasutab kadudeta pakkimist, nii et see säilitab tihendamisel ja lahtipakkimisel kõik andmed. Samuti saate oma ZIP-faile krüptida ja dekrüpteerida.
Kuna uurimiseks on palju funktsioone, avastage, kuidas saate Pythoni ZIP-faili mooduli abil faile lugeda, pakkida ja lahti pakkida.
Mis on zip-faili moodul?
Pythoni abil ZIP-failidega manipuleerimiseks saate kasutada standardset zip-faili moodulit. Selle mooduliga saate avada ja lugeda zip-faile, lugeda nende metaandmeid, luua ZIP-faili, tihendada seda ja faile lahti pakkida. Saadaval on kolm tihendusmeetodit: tühjendamine, Bzip2 ja LZMA.
Üks asi, mis moodulil puudub, on võime käsitleda mitme ketta faile, kuid see saab hakkama ZIP64 laiendiga. See võib ka zip-arhiive dekrüpteerida, kuid mitte krüptida. Zip-faili mooduli abil saate hankida ZIP-faili metaandmeid, nagu muutmise kuupäev ja kellaaeg. Samuti saate hankida üksikasju, nagu faili loomiseks kasutatud operatsioonisüsteem, ZIP-faili versioon ja faili suurus nii tihendatud kui ka tihendamata vormingus.
Kuidas faile Pythoni abil pakkida
Pythoni ZIP-faili mooduli abil saate ühte arhiivi pakkida mitu faili. Importige ZipFile moodulist zip-fail pakett vajalike zip-toimingute tegemiseks. Samuti importida a os moodul failide valimiseks ja salvestamiseks.
Määratlege funktsioon hanki_kõik_failide_teed(). See peaks aktsepteerima kataloogiparameetrit, mis sisaldab pakitavaid faile sisaldava kausta teed.
Käivitage tühi loend, mis salvestab failiteede loendi. Sihtkataloogi täieliku sisu hankimiseks kasutage tsüklit for os.walk() funktsiooni. See funktsioon hangib failinimed kataloogipuust, liikudes mööda seda ülalt-alla või alt-üles lähenemisviisis. Iga kataloogi kohta tagastab funktsioon kolmest korruse, mis sisaldab juurt, kaustasid ja faile.
Juur on string, mis sisaldab kataloogi täielikku teed. Kataloogide loend sisaldab kõiki kataloogis sisalduvaid alamkatalooge. Failide loend sisaldab kõiki kataloogis olevaid faile.
Silmuse sees kuulutage välja teine tsükkel faililoendi kordamiseks. Kasuta os.path.join() funktsioon kombineerida kataloogi nimi iga failinimega, et luua täielik tee. Seejärel lisage see täielik failinimi varem loodud loendisse. Kui see toiming on lõppenud, tagastage failiteede loend.
# importige vajalikud moodulid
alates zip-fail importida ZipFile
importida os# looge funktsioon kõigi failiteede hankimiseks
defhanki_kõik_failide_teed(kataloog):
# tühja loendi lähtestamine failiteede salvestamiseks
faili_teed = []# failide vahel navigeerimiseks
jaoksjuur, kataloogid, failidsisseos.kõndima(kataloog):
failinime jaoks failides:
# ühendage juur ja failinimi, et luua täielik failitee
failitee = os.path.join (juur, failinimi)
faili_teed.lisa(faili teekond)
# kõigi failiteede tagastamine
tagasi faili_teed
Salvestage muutujasse nimega kataloog tee kausta, mis sisaldab faile, mida soovite pakkida. Funktsiooni kutsumine, hanki_kõik_failide_teed() mille olete varem loonud, ja salvestage väärtus, mille see tagastab faili_teed.
Kuvage kasutajale teade, et anda neile teada, et need on failid, mille programm pakib. Korrake faile ja kuvage nende nimed.
Edastage nimi, mille soovite oma ZIP-failile lisada, koos spetsifikatsiooniga, mille kohaselt programm tagastab kirjutatava faili, kasutades erandite käsitlemiseks käsku with. Korrake iga faili üle ja kasutage kirjutatava faili puhul funktsiooni write() ZIP-failiks.
Kui toiming on lõpetatud, väljastage teade, mis selgitab, et programm pakkis kõik failid edukalt kokku.
# tee kausta, mida soovite pakkida
kataloog = './pythonzip'# helistamisfunktsioon, et saada kõik failiteed kataloogis
faili_teed = hanki_kõik_failide_teed (kataloog)# kõigi failide loendi printimine, mida soovite pakkida
printida('Zipitavate failide loend:')faili_nimi jaoks faili_teedes:
printida(faili nimi)# failide kirjutamine ZIP-faili
koos ZipFile("minu_fail.zip", 'w') nagu zip:
# kirjutage iga fail ükshaaval
faili jaoks failiteekonnas:
tõmblukk.kirjutada(faili)
printida("Kõik failid on pakitud!")
Kuidas faile Pythoni abil lahti pakkida
Failide lahtipakkimine zipfile mooduli abil on palju lihtsam. Importige zip-fail pakett alates ZipFile moodul ja salvestage muutujasse ZIP-faili nimi, mida soovite ekstraktida. Kasutage erandite käsitlemiseks käsku with ja avage lugemisrežiimis fail, mida soovite ekstraktida. Kasuta printdir() funktsioon ZIP-pakendis olevate failide sisukorra kuvamiseks.
Kuvage edenemisteade, et pakkite faile välja ja kasutage ekstraktall() zip-faili sisu praegusesse töökataloogi ekstraktimiseks. Teise võimalusena võite lisada tee parameetri, et muuta teed, kust programm failid ekstraktib.
Kuvage sõnum, kasutades nuppu printida avaldus toimingu lõpetamise kohta.
# vajalike moodulite importimine
alates zip-fail importida ZipFile# edastage selle ZIP-faili nimi, mida soovite ekstraktida
faili_nimi = "extract.zip"# ZIP-faili avamine lugemisrežiimis
koos ZipFile (faili_nimi, 'r') nagu zip:
# kuvab ZIP-faili sisu
tõmblukk.printdir()
# kõigi failide ekstraktimine
printida(„Väljavõte on pooleli...”)
tõmblukk.Extractall()
printida("Kõik failid on ekstraktitud!")
Lisateavet ZIP-failide kohta
Zip-failid on kogunud palju populaarsust ja neid kasutatakse juba aastakümneid. Populaarsed veebisaidid, nagu GitHub ja Google Drive, võimaldavad teil ZIP-arhiivina alla laadida failide kogu. Zip-programm tihendab failide komplekti ühte paketti. See on vastupidine tööriistale nagu tar, mis pakib failid kokku, kuid ei tihenda neid.
Kui soovite oma faile tõhusama algoritmi abil krüptida, on õige tee kasutada RAR-faile. RAR kasutab AES-128 algoritmi, mis on parem kui zip-failide kasutatav tühjendusalgoritm. Lõpuks valige see, mis teie vajadustele kõige paremini vastab.