Python

Pythoni gzip-moodul

Pythoni gzip-moodul

Selles tunnis uurime, kuidas saaksime Pythoni kasutada zzip moodul Pythoni pakitud failide lugemiseks ja kirjutamiseks. Suurim funktsioon, mille see moodul meile pakub, on see, et suudame tihendatud faile käsitleda tavaliste failiobjektidena, mis säästab meid failide haldamise keerukusest ja nende elutsüklist meie koodis ning võimaldab meil keskenduda programmi põhilisele äriloogikale.The zzip moodul pakub meile peaaegu samu funktsioone nagu GNU programmid püssilukk ja zzip.

Tihendatud failide kirjutamine avatud ()

Alustame põhinäite abil, kus saame luua gzip-faili ja sinna mõned andmed kirjutada. Selleks peame tegema faili ja avama selle kirjutamisrežiimis, et sinna saaks andmeid sisestada. Vaatame näidisprogrammi, mille abil saame andmeid gzip-faili kirjutada:

importige gzip
import io
impordi os
output_file = 'linxhint_demo.txt.gz '
write_mode = 'wb'
gzip-ga.väljundina avatud (väljundfail, kirjutamisrežiim):
io-ga.TextIOWrapper (väljund, kodeerimine = 'utf-8') kodeeringuna:
kodeerida.kirjuta ('Me võime faili kirjutada kõik, mida tahame.\ n ')
print (väljund_fail,
'sisaldab', os.stat (väljundfail).st_size, 'baidid')
os.süsteem ('fail -b - mime '.formaat (väljundfail))

Selle käsuga saame tagasi:

Zip-faili kirjutamine

Kui vaatate nüüd kaustastruktuuri, kus selle skripti käivitasite, peaks olema uus fail nimega see, mida me ülal meie programmis pakkusime.

Mitme rea kirjutamine tihendatud faili

Samuti võime oma gzip-faili kirjutada mitu rida või tegelikult suvalise arvu ridu väga sarnasel viisil nagu eelmises näites. Selle näite erinevaks muutmiseks kasutame ka itertooli moodulit. Vaatame näidisprogrammi:

importige gzip
import io
impordi os
importida itertoole
output_file = 'linxhint_demo.txt.gz '
write_mode = 'wb'
gzip-ga.väljundina avatud (väljundfail, kirjutamisrežiim):
io-ga.TextIOWrapper (väljund, kodeerimine = 'utf-8') koodina:
enc.kirjutusliinid (
itertoolid.kordus ('LinuxHint, sama rea ​​kordamine!.\ n ', 10)
)
os.süsteem ('gzcat linxhint_demo.txt.gz ')

Vaatame selle käsu väljundit:

Mitme rea kirjutamine

Pakitud andmete lugemine

Samuti võime viimases näites loodud tihendatud faili lugeda mooduli gzip abil, kasutades selleks väga lihtsat kõnet avatud funktsioon:

importige gzip
import io
impordi os
faili_nimi = 'linxhint_demo.txt.gz '
file_mode = 'rb'
gzip-ga.ava (faili_nimi, faili_režiim) sisendfailina:
io-ga.TextIOWrapper (sisendfail, kodeerimine = 'utf-8') dets
print (dets.loe ()

Selle käsuga saame tagasi:

Gzip-faili lugemine

Voogude lugemine

Tulenevalt asjaolust, et tekstifailid võivad olla väga suured, on mõistlik avada need failid voos, selle asemel et laadida täielik fail ühte objekti, mis võtab palju süsteemi mälu ja võib mõnel juhul isegi protsessi põhjustada täielikult kokku kukkuma. Vaatame näidisprogrammi, mis loeb antud tihendatud faili voos:

importige gzip
io-st importige BytesIO
import binascii
mode_write = 'wb'
mode_read = 'rb'
non_compressed = b'Korduv rida x korda.\ n '* 8
print ('tihendamata andmed:', len (tihendamata))
print (tihendamata)
buf = BytesIO ()
gzip-ga.GzipFile (režiim = mode_write, fileobj = buf) failina:
faili.kirjuta (tihendamata)
kokkusurutud = buf.getvalue ()
print ('tihendatud andmed:', len (tihendatud))
print (binascii.hexlify (tihendatud))
in_buffer = BytesIO (tihendatud)
gzip-ga.GzipFile (mode = mode_read, fileobj = in_buffer) failina:
read_data = fail.loe (len (tihendamata))
print ('\ nUuesti lugemine:', len (read_data))
print (loe_andmeid)

Vaatame selle käsu väljundit:

Gzip-faili lugemine voos

Kuigi programm oli natuke pikk, kasutasime Pythoni mooduleid lihtsalt faili avamiseks ja sisu voogesitamiseks lugejaobjektiga konsooli.

Järeldus

Selles tunnis vaatasime, kuidas saaksime Pythoni gzip-moodulit kasutada failide tihendamiseks ja dekompressimiseks Pythonis. Suurim funktsioon, mida see kogu meile pakub, on see, et suudame tihendatud faile käsitleda tavaliste failiobjektidena.

Loe rohkem Pythoni põhiseid postitusi siit.

Kuidas kasutada GameConquerori petumootorit Linuxis
Artikkel sisaldab juhendit GameConquerori petumootori kasutamise kohta Linuxis. Paljud kasutajad, kes mängivad Windowsis mänge, kasutavad rakendust „C...
Parimad Linuxi mängukonsooli emulaatorid
Selles artiklis loetletakse Linuxi jaoks saadaval olev populaarne mängukonsooli emuleerimise tarkvara. Emuleerimine on tarkvara ühilduvuse kiht, mis j...
Parimad mängude jaoks mõeldud Linuxi distrod 2021. aastal
Linuxi operatsioonisüsteem on oma algsest, lihtsast, serveripõhisest välimusest kaugele jõudnud. See operatsioonisüsteem on viimastel aastatel tohutul...