Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Zippaus on tyylikäs tapa pakata useita tiedostoja ja yhdistää ne yhdeksi. Tämä säästää paitsi tallennustilaa myös kaistanleveyttä siirrettäessä tiedostoa verkon kautta. Yksi zipin parhaista ominaisuuksista on, että se toimii kaikilla tärkeimmillä alustoilla: Windows, Linux ja Mac.

Zip käyttää häviötöntä pakkausta, jotta se säilyttää kaikki tiedot pakatessaan ja purettaessa sitä. Voit myös salata ja purkaa zip-tiedostosi.

Kun tutkittavana on niin monia ominaisuuksia, opi kuinka voit lukea, pakata ja purkaa tiedostoja Python zipfile -moduulin avulla.

Mikä on zipfile-moduuli?

Voit käyttää tavallista zipfile-moduulia zip-tiedostojen käsittelemiseen Pythonilla. Tällä moduulilla voit avata ja lukea zip-tiedostoja, lukea niiden metatietoja, luoda zip-tiedoston, pakata sen ja purkaa tiedostoja. Käytettävissä on kolme pakkaustapaa: Deflate, Bzip2 ja LZMA.

Yksi moduulilta puuttuvista asioista on kyky käsitellä usean levyn tiedostoja, mutta se käsittelee ZIP64-laajennusta. Se voi myös purkaa zip-arkistojen salauksen, mutta ei salaa niitä. Zipfile-moduulin avulla saat zip-tiedoston metatiedot, kuten muokkauksen päivämäärän ja kellonajan. Voit myös hakea tietoja, kuten tiedoston luomiseen käytetyn käyttöjärjestelmän, zip-version ja tiedoston koon sekä pakatussa että pakkaamattomassa muodossa.

Kuinka pakata tiedostoja Pythonilla

Pythonin zipfile-moduulin avulla voit pakata useita tiedostoja yhteen arkistoon. Tuo ZIP-tiedosto moduuli ZIP-tiedosto paketti suorittaaksesi tarvittavat zip-toiminnot. Myös tuonti the os moduuli tiedostojen valitsemiseen ja tallentamiseen.

Määritä funktio get_all_file_paths(). Sen pitäisi hyväksyä hakemistoparametri, joka sisältää polun pakattavat tiedostot sisältävään kansioon.

Alusta tyhjä luettelo, joka tallentaa tiedostopolkuluettelon. Käytä for-silmukkaa saadaksesi kohdehakemiston koko sisällön käyttämällä os.walk() toiminto. Tämä toiminto hakee tiedostojen nimet hakemistopuusta liikkumalla sitä pitkin ylhäältä alas tai alhaalta ylös -lähestymistapassa. Kullekin hakemistolle funktio palauttaa kolmen osan, joka sisältää juuri-, dirs- ja tiedostot.

Juuri on merkkijono, joka sisältää koko polun hakemistoon. Dirs-luettelo sisältää kaikki hakemiston sisältämät alihakemistot. Tiedostoluettelo sisältää kaikki hakemistossa olevat tiedostot.

Ilmoita silmukan sisällä toinen silmukka iteroidaksesi tiedostoluetteloa. Käytä os.path.join() toiminto yhdistää hakemiston nimen jokaisen tiedostonimen kanssa täydellisen polun muodostamiseksi. Liitä sitten tämä täydellinen tiedostonimi aiemmin luomaasi luetteloon. Kun tämä toiminto on valmis, palauta tiedostopolkujen luettelo.

# tuo tarvittavat moduulit
alkaen ZIP-tiedosto tuonti ZIP-tiedosto
tuonti os

# luo funktio saadaksesi kaikki tiedostopolut
defget_all_file_paths(hakemisto):
# tyhjän listan alustaminen tiedostopolkujen tallentamiseksi
file_paths = []

# selata tiedostoja
vartenjuuri, hakemistoja, tiedostotsisäänos.kävellä(hakemistosta):
tiedostonimelle tiedostoissa:
# yhdistä juuri ja tiedostonimi luodaksesi täydellinen tiedostopolku
tiedostopolku = os.path.join (juuri, tiedostonimi)
file_paths.Liitä(tiedostopolku)

# palauttaa kaikki tiedostopolut
palata file_paths

Tallenna polku kansioon, joka sisältää pakattavat tiedostot, muuttujaan nimeltä hakemisto. Kutsu toiminto, get_all_file_paths() jonka loit aiemmin ja tallenna sen palauttama arvo file_paths.

Näytä käyttäjälle viesti, jossa kerrotaan, että ohjelma pakkaa nämä tiedostot. Iteroi tiedostot ja näytä niiden nimet.

Anna nimi, jonka haluat zip-tiedostollesi, sekä määritys, että ohjelma palauttaa kirjoitettavan tiedoston käyttämällä with-käskyä poikkeuksien käsittelyyn. Toista jokaisen tiedoston yli ja käytä write()-funktiota kirjoitettavan tiedoston päällä zip-tiedostoksi.

Kun toiminto on valmis, tulosta viesti, jossa selitetään, että ohjelma pakkasi kaikki tiedostot onnistuneesti.

# polku kansioon, jonka haluat pakata
hakemisto = './pythonzip'

# kutsuva toiminto saadakseen kaikki tiedostopolut hakemistossa
file_paths = get_all_file_paths (hakemisto)

# tulostaa luettelon kaikista tiedostoista, jotka haluat pakata
Tulosta("Luettelo tiedostoista, jotka pakataan:")

tiedostolle file_name in file_paths:
Tulosta(Tiedoston nimi)

# tiedostojen kirjoittaminen zip-tiedostoon
kanssa ZIP-tiedosto("oma_tiedosto.zip", 'w') kuten postinumero:
# kirjoita jokainen tiedosto yksitellen
tiedostolle file_paths:
postinumero.kirjoittaa(tiedosto)

Tulosta("Kaikki tiedostot on pakattu!")

Kuinka purkaa tiedostoja Pythonilla

Tiedostojen purkaminen zipfile-moduulilla on paljon helpompaa. Tuo ZIP-tiedosto paketti osoitteesta ZIP-tiedosto moduuli ja tallenna sen zip-tiedoston nimi, jonka haluat purkaa muuttujaan. Käytä with-käskyä käsitelläksesi poikkeuksia ja avaaksesi tiedoston, jonka haluat purkaa lukutilassa. Käytä tulostushakemisto() toiminto näyttää zip-tiedostossa olevien tiedostojen sisällysluettelot.

Näytä edistymisviesti, että purat tiedostoja ja käytä Pura kaikki() toiminto purkaa zip-tiedoston sisällön nykyiseen työhakemistoon. Vaihtoehtoisesti voit sisällyttää polkuparametrin muuttaaksesi polun, josta ohjelma purkaa tiedostot.

Näytä viesti käyttämällä Tulosta lausunto toimenpiteen päättymisestä.

# tuodaan tarvittavat moduulit
alkaen ZIP-tiedosto tuonti ZIP-tiedosto

# välitä sen zip-tiedoston nimi, jonka haluat purkaa
tiedoston_nimi = "extract.zip"

# zip-tiedoston avaaminen lukutilassa
kanssa ZipFile (tiedoston_nimi, 'r') kuten postinumero:
# näyttää zip-tiedoston sisällön
postinumero.printdir()

# purkaa kaikki tiedostot
Tulosta("Ote käynnissä...")
postinumero.Pura kaikki()
Tulosta("Kaikki tiedostot puretaan!")

Lisätietoja zip-tiedostoista

Zip-tiedostot ovat saavuttaneet suuren suosion ja ovat käytössä jo vuosikymmeniä. Suositut verkkosivustot, kuten GitHub ja Google Drive, antavat sinun ladata kokoelman tiedostoja zip-arkistona. Zip-ohjelma pakkaa joukon tiedostoja yhdeksi paketiksi. Tämä on toisin kuin työkalu, kuten tar, joka pakkaa tiedostot yhteen, mutta ei pakkaa niitä.

Jos haluat salata tiedostosi tehokkaammalla algoritmilla, RAR-tiedostot ovat oikea tapa. RAR käyttää AES-128-algoritmia, joka on parempi kuin zip-tiedostojen käyttämä deflate-algoritmi. Valitse lopulta tarpeitasi parhaiten vastaava.