Piton

Python gzip modul

Python gzip modul

U ovoj ćemo lekciji proučavati kako možemo koristiti Python gzip modul za čitanje i pisanje u komprimirane datoteke u Pythonu. Najveća značajka koju nam ovaj modul pruža je da komprimirane datoteke možemo tretirati kao uobičajene datoteke, što nas spašava složenosti upravljanja datotekama i njihovim životnim ciklusom u našem kodu i omogućuje nam da se usredotočimo na osnovnu poslovnu logiku programa.The gzip modul pruža nam gotovo iste značajke kao što su GNU programi gunzip i gzip.

Pisanje komprimiranih datoteka s open ()

Počet ćemo s osnovnim primjerom gdje možemo stvoriti gzip datoteku i u nju upisati neke podatke. Za to moramo napraviti datoteku i otvoriti je s načinom pisanja kako bi se u nju mogli umetnuti podaci. Pogledajmo primjer programa pomoću kojeg podatke možemo zapisati u gzip datoteku:

uvoz gzip
uvoz io
uvoz os
output_file = 'linxhint_demo.txt.gz '
write_mode = 'wb'
sa gzipom.otvorite (output_file, write_mode) kao izlaz:
s io.TextIOWrapper (izlaz, kodiranje = 'utf-8') kao kodiranje:
kodirati.write ('U datoteku možemo upisati sve što želimo.\ n ')
ispis (output_file,
'sadrži', os.stat (izlazna_datoteka).st_size, 'bajtovi')
os.sustav ('datoteka -b --mime '.format (izlazna_datoteka))

Evo što vraćamo ovom naredbom:

Zapisivanje u zip datoteku

Ako sada pogledate strukturu mapa u kojoj ste izvršili ovu skriptu, trebala bi postojati nova datoteka s imenom s onim što smo naveli u našem programu iznad.

Zapisivanje više redaka u komprimiranu datoteku

Također možemo napisati više redaka ili zapravo bilo koji broj redaka u našu gzip datoteku na vrlo sličan način kao što smo to učinili u prethodnom primjeru. Da bismo ovaj primjer učinili drugačijim, poslužit ćemo se i modulom itertools. Pogledajmo primjer programa:

uvoz gzip
uvoz io
uvoz os
uvoz itertools
output_file = 'linxhint_demo.txt.gz '
write_mode = 'wb'
sa gzipom.otvorite (output_file, write_mode) kao izlaz:
s io.TextIOWrapper (izlaz, kodiranje = 'utf-8') kao enc:
enk.linije za pisanje (
itertools.repeat ('LinuxHint, ponavljanje istog retka!.\ n ', 10)
)
os.sustav ('gzcat linxhint_demo.txt.gz ')

Pogledajmo izlaz za ovu naredbu:

Pisanje više redaka

Čitanje komprimiranih podataka

Također možemo čitati komprimiranu datoteku koju smo stvorili u posljednjem primjeru pomoću gzip modula s vrlo jednostavnim pozivom na otvorena funkcija:

uvoz gzip
uvoz io
uvoz os
file_name = 'linxhint_demo.txt.gz '
file_mode = 'rb'
sa gzipom.otvori (ime_datoteke, način_datoteke) kao ulaznu_datoteku:
s io.TextIOWrapper (input_file, encoding = 'utf-8') u dec:
ispis (dec.čitati())

Evo što vraćamo ovom naredbom:

Čitanje gzip datoteke

Potoci za čitanje

S obzirom na činjenicu da tekstualne datoteke mogu biti vrlo velike, pametno je otvoriti ih u streamu, a ne učitavati cjelovitu datoteku u jedan objekt koji zauzima puno sistemske memorije, a u nekim slučajevima može čak uzrokovati proces da se potpuno sruši. Pogledajmo primjer programa koji čita zadanu komprimiranu datoteku u toku:

uvoz gzip
iz io uvoza BytesIO
uvoz binascii
mode_write = 'wb'
mode_read = 'rb'
non_compressed = b'Ponovljeni redak x puta.\ n '* 8
print ('Nekomprimirani podaci:', len (non_compressed))
ispis (nekomprimirano)
buf = BytesIO ()
sa gzipom.GzipFile (mode = mode_write, fileobj = buf) kao datoteka:
datoteka.pisanje (nekomprimirano)
stisnuto = buf.getvalue ()
print ('Komprimirani podaci:', len (komprimirani))
ispis (binascii.hexlify (komprimirani))
in_buffer = BytesIO (komprimirani)
sa gzipom.GzipFile (mode = mode_read, fileobj = in_buffer) kao datoteka:
read_data = datoteka.čitanje (len (nekomprimirano))
print ('\ nPonovno čitanje:', len (read_data))
ispis (čitaj_podatke)

Pogledajmo izlaz za ovu naredbu:

Čitanje gzip datoteke u streamu

Iako je program bio malo dugačak, zapravo smo samo koristili Python module kako bismo otvorili datoteku i preusmjerili sadržaj na konzolu s međuspremnikom čitača.

Zaključak

U ovoj smo lekciji pogledali kako možemo koristiti Python gzip modul za komprimiranje i dekompresiju datoteka u Pythonu. Najveća značajka koju nam nudi ova knjižnica je ta da komprimirane datoteke možemo tretirati kao normalne datoteke.

Ovdje pročitajte više postova temeljenih na Pythonu.

Najbolji Linux Distros za igre na sreću 2021. godine
Linux operativni sustav daleko je prevalio svoj izvorni, jednostavni izgled zasnovan na poslužitelju. Ovaj se OS posljednjih godina izuzetno poboljšao...
Kako snimiti i struji svoju igraću sesiju na Linuxu
U prošlosti se igranje igara smatralo samo hobijem, ali s vremenom je igračka industrija zabilježila ogroman rast u pogledu tehnologije i broja igrača...
Najbolje igre za ručno praćenje
Oculus Quest nedavno je predstavio sjajnu ideju ručnog praćenja bez kontrolera. Sa sve većim brojem igara i aktivnosti koje izvršavaju podršku bilo fo...