Pytonorm

Python gzip-modul

Python gzip-modul

I den här lektionen kommer vi att studera hur vi kan använda Python gzip modul för att läsa och skriva i de komprimerade filerna i Python. Den största funktionen som den här modulen ger oss är att vi kan behandla komprimerade filer som vanliga filobjekt vilket sparar oss från komplexiteten i att hantera filer och deras livscykel i vår kod och låter oss fokusera på programmets kärnverksamhetslogik.De gzip -modulen ger oss nästan samma funktioner som GNU-programmen gunzip och gzip.

Skriva komprimerade filer med öppen ()

Vi börjar med ett grundläggande exempel där vi kan skapa en gzip-fil och skriva lite data i den. För detta måste vi skapa en fil och öppna den med skrivläge så att data kan infogas i den. Låt oss titta på ett exempelprogram med vilket vi kan skriva data i en gzip-fil:

importera gzip
importera io
importera os
output_file = 'linxhint_demo.Text.gz '
write_mode = 'wb'
med gzip.öppna (output_file, write_mode) som output:
med io.TextIOWrapper (output, kodning = 'utf-8') som kod:
koda.skriv ('Vi kan skriva vad vi vill till filen.\ n ')
skriv ut (utdatafil,
'innehåller', os.stat (utdatafil).st_size, 'bytes')
os.system ('file -b --mime '.format (utdatafil))

Här är vad vi får tillbaka med det här kommandot:

Skriver till zip-fil

Om du nu tittar på mappstrukturen där du körde det här skriptet, borde det finnas en ny fil med namnet på det vi gav i vårt program ovan.

Skriva flera rader i en komprimerad fil

Vi kan också skriva flera rader eller faktiskt valfritt antal rader i vår gzip-fil på ett mycket liknande sätt som vi gjorde i föregående exempel. För att göra detta exempel annorlunda kommer vi också att använda modulen itertools. Låt oss titta på exempelprogrammet:

importera gzip
importera io
importera os
importera verktyg
output_file = 'linxhint_demo.Text.gz '
write_mode = 'wb'
med gzip.öppna (output_file, write_mode) som output:
med io.TextIOWrapper (output, kodning = 'utf-8') som enc:
enc.skrivlinjer (
itverktyg.repeat ('LinuxHint, upprepar samma rad!.\ n ', 10)
)
os.system ('gzcat linxhint_demo.Text.gz ')

Låt oss se utdata för det här kommandot:

Skriva flera rader

Läser komprimerade data

Vi kan också läsa den komprimerade filen som vi skapade i det senaste exemplet med hjälp av gzip-modulen med ett mycket enkelt samtal till öppna fungera:

importera gzip
importera io
importera os
file_name = 'linxhint_demo.Text.gz '
file_mode = 'rb'
med gzip.öppna (filnamn, filnamn) som inmatningsfil:
med io.TextIOWrapper (input_file, kodning = 'utf-8') som dec:
skriva ut (dec.läsa())

Här är vad vi får tillbaka med det här kommandot:

Läser en gzip-fil

Läser strömmar

På grund av det faktum att textfiler kan vara mycket stora, är det smart att öppna dessa filer i en ström snarare än att ladda hela filen i ett enda objekt som upptar mycket systemminne och i vissa fall till och med kan orsaka processen att krascha helt. Låt oss titta på ett exempelprogram som läser den givna komprimerade filen i en ström:

importera gzip
från io importera BytesIO
importera binascii
mode_write = 'wb'
mode_read = 'rb'
icke-komprimerad = b'Upprepad linje x gånger.\ n '* 8
skriv ut ('Icke komprimerad data:', len (icke_komprimerad))
skriva ut (icke-komprimerad)
buf = BytesIO ()
med gzip.GzipFile (mode = mode_write, fileobj = buf) som fil:
fil.skriv (icke-komprimerad)
komprimerad = buf.getvalue ()
skriv ut ('Komprimerad data:', len (komprimerad))
skriva ut (binascii.hexlify (komprimerad))
in_buffer = BytesIO (komprimerad)
med gzip.GzipFile (mode = mode_read, fileobj = in_buffer) som fil:
read_data = fil.läs (len (icke-komprimerad))
skriva ut ('\ nLäs igen:', len (read_data))
skriv ut (läsdata)

Låt oss se utdata för det här kommandot:

Läser gzip-fil i en ström

Även om programmet var lite långt använde vi faktiskt bara Python-moduler för att öppna filen och strömma innehållet vidare till konsolen med ett buffrat läsarobjekt.

Slutsats

I den här lektionen tittade vi på hur vi kan använda Python gzip-modul för att komprimera och dekomprimera filer i Python. Den största funktionen som detta bibliotek ger oss är att vi kan behandla komprimerade filer som vanliga filobjekt.

Läs mer Python-baserade inlägg här.

Mus AppyMouse styrplatta och muspekare för Windows-surfplattor
AppyMouse styrplatta och muspekare för Windows-surfplattor
Surfplattanvändare saknar ofta muspekaren, särskilt när de brukar använda bärbara datorer. Pekskärmen Smartphones och surfplattor har många fördelar o...
Mus Mellan musknappen fungerar inte i Windows 10
Mellan musknappen fungerar inte i Windows 10
De mittknappen hjälper dig att bläddra igenom långa webbsidor och skärmar med mycket data. Om det slutar, kommer du sluta använda tangentbordet för at...
Mus Hur man ändrar vänster och höger musknapp på Windows 10 PC
Hur man ändrar vänster och höger musknapp på Windows 10 PC
Det är en hel norm att alla datormusenheter är ergonomiskt utformade för högerhänta användare. Men det finns musenheter tillgängliga som är speciellt ...