Python

Python gzip-modul

Python gzip-modul

I denne leksjonen vil vi studere hvordan vi kan bruke Python gzip modul for å lese og skrive til de komprimerte filene i Python. Den største funksjonen denne modulen gir oss, er at vi kan behandle komprimerte filer som vanlige filobjekter, noe som sparer oss for kompleksiteten ved å administrere filer og deres livssyklus i koden vår, og som lar oss fokusere på kjernevirksomhetslogikken til programmet.De gzip modul gir oss nesten de samme funksjonene som GNU-programmene som pistol og gzip.

Skrive komprimerte filer med åpen ()

Vi starter med et grunnleggende eksempel der vi kan lage en gzip-fil og skrive litt data inn i den. For dette må vi lage en fil og åpne den med skrivemodus slik at data kan settes inn i den. La oss se på et eksempelprogram som vi kan skrive data i en gzip-fil med:

importer gzip
import io
importer os
output_file = 'linxhint_demo.tekst.gz '
write_mode = 'wb'
med gzip.åpne (output_file, write_mode) som output:
med io.TextIOWrapper (output, koding = 'utf-8') som koding:
kode.skriv ('Vi kan skrive hva vi vil til filen.\ n ')
skriv ut (utdatafil,
'inneholder', os.stat (utdatafil).st_size, 'bytes')
os.system ('file -b --mime '.format (utdatafil))

Her er hva vi kommer tilbake med denne kommandoen:

Skriver til zip-fil

Hvis du nå tar en titt på mappestrukturen der du kjørte dette skriptet, bør det være en ny fil som heter det vi ga i vårt program ovenfor.

Skrive flere linjer i en komprimert fil

Vi kan også skrive flere linjer eller faktisk et hvilket som helst antall linjer i gzip-filen på en veldig lik måte som vi gjorde i forrige eksempel. For å gjøre dette eksemplet annerledes, vil vi også bruke itertools-modulen. La oss se på eksempelprogrammet:

importer gzip
import io
importer os
importere verktøy
output_file = 'linxhint_demo.tekst.gz '
write_mode = 'wb'
med gzip.åpne (output_file, write_mode) som output:
med io.TextIOWrapper (output, koding = 'utf-8') som enc:
enc.skriftlige linjer (
verktøy.repeat ('LinuxHint, gjentar samme linje!.\ n ', 10)
)
os.system ('gzcat linxhint_demo.tekst.gz ')

La oss se utdataene for denne kommandoen:

Skrive flere linjer

Lese komprimerte data

Vi kan også lese den komprimerte filen vi opprettet i det siste eksemplet ved hjelp av gzip-modulen med en veldig enkel samtale til åpen funksjon:

importer gzip
import io
importer os
file_name = 'linxhint_demo.tekst.gz '
file_mode = 'rb'
med gzip.åpne (filnavn, filtilstand) som inngangsfil:
med io.TextIOWrapper (input_file, koding = 'utf-8') som des:
utskrift (des.lese())

Her er hva vi kommer tilbake med denne kommandoen:

Lese en gzip-fil

Lesestrømmer

På grunn av det faktum at tekstfiler kan være veldig store, er det smart å åpne disse filene i en strøm i stedet for å laste hele filen i et enkelt objekt som opptar mye systemminne og i noen tilfeller til og med kan forårsake prosessen å krasje helt. La oss se på et eksempelprogram som leser den gitte komprimerte filen i en strøm:

importer gzip
fra io importere BytesIO
importer binascii
mode_write = 'wb'
mode_read = 'rb'
ikke_komprimert = b'Gentatt linje x ganger.\ n '* 8
skriv ut ('Ikke komprimert data:', len (ikke_komprimert))
skriv ut (ikke-komprimert)
buf = BytesIO ()
med gzip.GzipFile (mode = mode_write, fileobj = buf) som fil:
fil.skriv (ikke-komprimert)
komprimert = buf.getvalue ()
print ('Compressed Data:', len (komprimert))
utskrift (binascii.hexlify (komprimert))
in_buffer = BytesIO (komprimert)
med gzip.GzipFile (mode = mode_read, fileobj = in_buffer) som fil:
read_data = fil.les (len (ikke-komprimert))
skriv ut ('\ nLes det igjen:', len (read_data))
skriv ut (read_data)

La oss se utdataene for denne kommandoen:

Lese gzip-fil i en strøm

Selv om programmet var litt langt, brukte vi faktisk bare Python-moduler for å åpne filen og streame innholdet videre til konsollen med et bufret leserobjekt.

Konklusjon

I denne leksjonen så vi på hvordan vi kan bruke Python gzip-modul til å komprimere og dekomprimere filer i Python. Den største funksjonen dette biblioteket gir oss er at vi kan behandle komprimerte filer som vanlige filobjekter.

Les flere Python-baserte innlegg her.

Installer det siste OpenRA-strategispillet på Ubuntu Linux
OpenRA er en Libre / Free Real Time Strategy-spillmotor som gjenskaper de tidlige Westwood-spillene som den klassiske Command & Conquer: Red Alert. Di...
Installer nyeste Dolphin Emulator for Gamecube & Wii på Linux
Dolphin Emulator lar deg spille de valgte Gamecube- og Wii-spillene dine på Linux Personal Computers (PC). Som en fritt tilgjengelig og åpen kildekod...
Hvordan bruke GameConqueror Cheat Engine i Linux
Artikkelen dekker en guide om bruk av GameConqueror-juksemotoren i Linux. Mange brukere som spiller spill på Windows bruker ofte "Cheat Engine" -appli...