Piton

Python gzip modul

Python gzip modul

Ebben a leckében megvizsgáljuk, hogyan használhatjuk a Python-t gzip modul a Python tömörített fájljainak olvasásához és írásához. A modul által nyújtott legnagyobb tulajdonság az, hogy a tömörített fájlokat normál fájlobjektumként kezelhetjük, ami megkímél bennünket a fájlok kezelésének összetettségétől és a kódunk életciklusától, és lehetővé teszi számunkra, hogy a program alapvető üzleti logikájára összpontosítsunk.A gzip modul szinte ugyanazokat a szolgáltatásokat biztosítja számunkra, mint a GNU programok gunzip és gzip.

Tömörített fájlok írása nyitva ()

Kezdjük egy alap példával, ahol létrehozhatunk egy gzip fájlt, és írhatunk bele néhány adatot. Ehhez létre kell hoznunk egy fájlt, és írásmóddal kell megnyitnunk, hogy az adatok beilleszthetők legyenek. Nézzünk meg egy mintaprogramot, amellyel adatokat írhatunk egy gzip fájlba:

import gzip
import io
import os
output_file = 'linxhint_demo.txt.gz '
write_mode = 'wb'
gzip-el.nyitott (output_file, write_mode) kimenetként:
az io-val.TextIOWrapper (output, encoding = 'utf-8') kódként:
kódol.write ('Bármit beírhatunk a fájlba.\ n ')
print (output_file,
'tartalmaz', os.stat (output_file).st_size, 'bájt')
os.rendszer ('file -b --mime '.formátum (output_file))

Íme, amit ezzel a paranccsal kapunk vissza:

Írás ZIP fájlba

Ha most megnézi azt a mappastruktúrát, ahol végrehajtotta ezt a szkriptet, akkor egy új fájlnak kell lennie, amelynek neve a fenti programunkban megadott.

Több sor írása tömörített fájlba

A gzip fájlba több sort, vagy akármennyi sort is írhatunk, nagyon hasonló módon, mint az előző példában. Ahhoz, hogy ez a példa más legyen, felhasználjuk az itertools modult is. Nézzük meg a mintaprogramot:

import gzip
import io
import os
importálja az itertoolokat
output_file = 'linxhint_demo.txt.gz '
write_mode = 'wb'
gzip-el.nyitott (output_file, write_mode) kimenetként:
az io-val.TextIOWrapper (output, encoding = 'utf-8') enc-ként:
enc.írósorok (
itertoolok.repeat ('LinuxHint, ugyanazon sor megismétlése!.\ n ', 10)
)
os.rendszer ('gzcat linxhint_demo.txt.gz ')

Lássuk a parancs kimenetét:

Több sor írása

Tömörített adatok olvasása

Az utolsó példában létrehozott tömörített fájlt a gzip modul használatával is elolvashatjuk egy nagyon egyszerű hívással nyisd ki funkció:

import gzip
import io
import os
file_name = 'linxhint_demo.txt.gz '
file_mode = 'rb'
gzip-el.nyissa meg (fájlnév, fájl_mód) bemeneti fájlként:
az io-val.TextIOWrapper (input_file, kódolás = 'utf-8') dec-ként:
nyomtatás (dec.olvas())

Íme, amit ezzel a paranccsal kapunk vissza:

Gzip fájl olvasása

Patakok olvasása

Annak a ténynek köszönhetően, hogy a szöveges fájlok nagyon nagy méretűek lehetnek, okos ezeket a fájlokat streamben megnyitni, nem pedig a teljes fájlt egyetlen objektumba tölteni, ami a rendszer nagy memóriáját foglalja el, és egyes esetekben akár a folyamatot is előidézheti. hogy teljesen lezuhanjon. Nézzünk meg egy mintaprogramot, amely egy adott tömörített fájlt olvas fel egy adatfolyamban:

import gzip
az io BytesIO importálásából
import binascii
mode_write = 'wb'
mode_read = 'rb'
non_compressed = b'Megismételte a sort x alkalommal.\ n '* 8
print ('Nem tömörített adatok:', len (nem tömörített))
nyomtatás (nem tömörítve)
buf = BytesIO ()
gzip-el.GzipFile (mode = mode_write, fileobj = buf) fájlként:
fájl.ír (nem tömörített)
tömörítve = buf.getvalue ()
nyomtatás ('Tömörített adatok:', len (tömörítve))
nyomtatás (binascii.hexlify (tömörítve))
in_buffer = BytesIO (tömörítve)
gzip-el.GzipFile (mode = mode_read, fileobj = in_buffer) fájlként:
read_data = fájl.olvasni (len (nem tömörített))
print ('\ nÚjraolvasás:', len (read_data))
nyomtatás (read_data)

Lássuk a parancs kimenetét:

Gzip fájl olvasása streamben

Bár a program egy kicsit hosszú volt, valójában csak a Python modulokat használtuk, hogy megnyissuk a fájlt, és pufferolt olvasóobjektummal továbbítsuk a tartalmat a konzolra.

Következtetés

Ebben a leckében megvizsgáltuk, hogyan használhatjuk a Python gzip modult a fájlok tömörítésére és dekompresszálására a Pythonban. A könyvtár által kínált legnagyobb funkció az, hogy a tömörített fájlokat normál File objektumként kezelhetjük.

További Python alapú bejegyzéseket itt olvashat.

HD Remastered Games for Linux, amelyeknek soha nem volt korábban Linux kiadásuk
Számos játékfejlesztő és kiadó a régi játékok HD remasterjével áll elő a franchise élettartamának meghosszabbítása érdekében. Kérjük, hogy a rajongók ...
Az AutoKey használata a Linux játékok automatizálásához
Az AutoKey egy asztali automatizáló segédprogram Linux és X11 rendszerekhez, Python 3, GTK és Qt programozással. A parancsfájlok és a MACRO funkcióina...
Az FPS-számláló megjelenítése a Linux-játékokban
A Linux játék komoly lendületet kapott, amikor a Valve 2012-ben bejelentette a Linux támogatását a Steam kliensnek és játékaiknak. Azóta sok AAA és in...