Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Zipanje je elegantan način komprimiranja nekoliko datoteka i njihovog kombiniranja u jednu. Ovo štedi ne samo prostor za pohranu, već i propusnost prilikom prijenosa datoteke preko mreže. Jedna od najboljih značajki zip-a je da radi na svim glavnim platformama: Windows, Linux i Mac.

Zip koristi kompresiju bez gubitaka tako da zadržava sve podatke prilikom kompresije i dekompresije. Također možete šifrirati i dešifrirati svoje zip datoteke.

S toliko mnogo značajki za istraživanje, otkrijte kako možete čitati, komprimirati i raspakirati datoteke pomoću Python modula zipfile.

Što je modul zipfile?

Možete koristiti standardni modul zipfile za manipuliranje zip datotekama pomoću Pythona. Pomoću ovog modula možete otvarati i čitati zip datoteke, čitati njihove metapodatke, kreirati zip datoteku, komprimirati je i raspakirati datoteke. Dostupne su tri metode kompresije: Deflate, Bzip2 i LZMA.

Jedna od stvari koje nedostaju modulu je mogućnost rukovanja datotekama s više diskova, ali on upravlja ZIP64 ekstenzijom. Također može dekriptirati zip arhive, ali ih ne može šifrirati. Pomoću modula zipfile možete dobiti metapodatke zip datoteke kao što su datum i vrijeme izmjene. Također možete dohvatiti pojedinosti poput operativnog sustava korištenog za stvaranje datoteke, verzije zip-a i veličine datoteke u komprimiranom i nekomprimiranom formatu.

Kako zipirati datoteke pomoću Pythona

Možete komprimirati više datoteka u jednu arhivu pomoću Pythonovog modula zipfile. Uvezi ZipFile modul iz zip datoteka paket za izvođenje potrebnih zip operacija. Također uvoz the os modul za odabir i spremanje datoteka.

Definirajte funkciju get_all_file_paths(). Trebao bi prihvatiti parametar direktorija koji sadrži stazu do mape koja sadrži datoteke za komprimiranje.

Inicijalizirajte prazan popis koji će pohraniti popis staza datoteka. Upotrijebite petlju for da biste dobili puni sadržaj ciljnog direktorija pomoću os.walk() funkcija. Ova funkcija dohvaća nazive datoteka u stablu direktorija pomicanjem duž njega pristupom odozgo prema dolje ili odozdo prema gore. Za svaki direktorij, funkcija vraća trostruku torku koja sadrži korijen, direktorije i datoteke.

Korijen je niz koji sadrži puni put do direktorija. Popis direktorija uključuje sve poddirektorije sadržane u direktoriju. Popis datoteka sadrži sve datoteke prisutne u direktoriju.

Unutar petlje, deklarirajte još jedan petlja za iteraciju po popisu datoteka. Koristiti os.path.join() funkcija za kombiniranje imena direktorija sa svakim nazivom datoteke kako bi se napravila potpuna staza. Zatim dodajte ovaj cijeli naziv datoteke popisu koji ste prethodno izradili. Kada ova operacija završi, vratite popis staza datoteka.

# uvoz potrebnih modula
iz zip datoteka uvoz ZipFile
uvoz os

# kreirajte funkciju za dobivanje svih staza datoteka
defdobiti_sve_puteve_datoteka(imenik):
# inicijaliziranje praznog popisa za pohranu staza datoteka
staze_datoteke = []

# kretanje kroz datoteke
zakorijen, imenici, datotekeuos.hodati(imenik):
za naziv datoteke u datotekama:
# spojite korijen i naziv datoteke kako biste stvorili potpuni put datoteke
filepath = os.path.join (korijen, naziv datoteke)
staze_datoteka.dodati(put datoteke)

# vraćanje svih staza datoteka
povratak staze_datoteka

Pohranite put do mape koja sadrži datoteke koje želite komprimirati u varijablu koja se zove imenik. Pozovite funkciju, get_all_file_paths() koju ste ranije stvorili i pohranite vrijednost koju vraća staze_datoteka.

Prikaži poruku korisniku da zna da su to datoteke koje će program komprimirati. Iterirajte preko datoteka i prikažite njihova imena.

Proslijedite naziv koji želite da vaša zip datoteka ima zajedno sa specifikacijom da program vraća datoteku u koju je moguće pisati koristeći naredbu with za rukovanje iznimkama. Iterirajte svaku datoteku i upotrijebite funkciju write() preko datoteke u koju je moguće pisati u zip datoteku.

Kada je operacija dovršena, ispišite poruku koja objašnjava da je program uspješno komprimirao sve datoteke.

# put do mape koju želite komprimirati
imenik = './pythonzip'

# pozivanje funkcije za dobivanje svih staza datoteka u direktoriju
file_paths = get_all_file_paths (direktorij)

# ispis popisa svih datoteka koje želite komprimirati
ispisati('Popis datoteka koje će se komprimirati:')

za file_name u file_paths:
ispisati(naziv datoteke)

# pisanje datoteka u zip datoteku
s Zip datoteka('moja_datoteka.zip', 'w') kao zip:
# napišite svaku datoteku jednu po jednu
za datoteku u file_paths:
zip.pisati(datoteka)

ispisati('Sve datoteke su komprimirane!')

Kako raspakirati datoteke pomoću Pythona

Implementacija raspakiranja datoteka pomoću modula zipfile puno je lakša. Uvezi zip datoteka paket od ZipFile modul i pohranite naziv zip datoteke koju želite izdvojiti u varijablu. Koristite naredbu with za rukovanje iznimkama i otvaranje datoteke koju želite izdvojiti u načinu čitanja. Koristiti printdir() funkcija za prikaz tablice sadržaja datoteka prisutnih u zip.

Prikažite poruku o napretku da izdvajate datoteke i koristite raspakiraj sve() funkcija za izdvajanje sadržaja zip datoteke u trenutni radni direktorij. Alternativno, možete uključiti parametar staze da biste promijenili stazu gdje program izdvaja datoteke.

Prikažite poruku pomoću ispisati izjava o završetku operacije.

# uvoz potrebnih modula
iz zip datoteka uvoz ZipFile

# proslijedite naziv zip datoteke koju želite izdvojiti
naziv_datoteke = "ekstrakt.zip"

# otvaranje zip datoteke u modu čitanja
s ZipFile (naziv_datoteke, 'r') kao zip:
# prikazati sadržaj zip datoteke
zip.printdir()

# izdvajanje svih datoteka
ispisati('Izdvajanje u tijeku...')
zip.raspakiraj sve()
ispisati('Sve su datoteke izdvojene!')

Više o Zip datotekama

Zip datoteke stekle su veliku popularnost i koriste se već desetljećima. Popularne web stranice kao što su GitHub i Google Drive omogućuju vam preuzimanje zbirke datoteka kao zip arhivu. Zip program komprimira skup datoteka u jedan paket. To je u suprotnosti s alatom kao što je tar koji pakira datoteke zajedno, ali ih ne sažima.

Ako želite šifrirati svoje datoteke pomoću učinkovitijeg algoritma, RAR datoteke su pravi izbor. RAR koristi algoritam AES-128 koji je bolji od algoritma deflate koji koriste zip datoteke. U konačnici odaberite onaj koji najbolje odgovara vašim potrebama.