Kā saspiest un atspiest datus Python

Satura rādītājs

Šodien mēs redzēsim apmācību, kas nodarbosies ar datu saspiešana un atspiešana Python, tas ir ļoti vienkāršs uzdevums, jo mums ir noteikti moduļi, kas ļaus mums veikt šo datu saspiešanas darbu. Bibliotēkas ir šādas: zlib, gzip, bz2, ZIP fails Y tarfile.

Visā apmācībā mēs redzēsim dažu bibliotēku piemērus, lai uzzinātu, kā to izmantot, tas ir labākais veids, kā saprast, kā tā darbojas.

PiezīmeTas izmantos Python 3. versiju.

Sāksim ar piemēriem. Visi no tiem būs vienkārši un viegli saprotami.

1. Zlib modulis


Mēs redzēsim pāris piemērus ar šo bibliotēku, abi būs viegli, kā mēs teicām iepriekš.

1. piemērs
Mums ir šāds kods, kā jūs varat redzēt īsumā:

 importēt zlib kā zl line = b "Šis ir tikai tests apmācībai, kas tiks publicēta Solvetic" line_compress = zl.compress (line) print ("Nesaspiests izmērs% d"% len (line)) print ("Saspiests izmērs% d "% len (line_compress))
Mēs saspiežam sākotnējo līniju un parādām, ko viens un otrs aizņem, iegūstot šādu izvadi:

Tagad nākamajā piemērā mēs redzēsim, kā atspiest.

2. piemērs
Nākamajā kodā mēs saspiežam līniju, parādām to saspiestu un izpakojam, lai to parādītu.

 importēt zlib kā zl line = b "Python zlib testēšana" line_compress = zl.compress (line) print (line_compress) line_decompress = zl.decompress (line_compress) print (line_decompress) print (line_decompress.decode ("utf-8"))
Mēs izmantojam koda pēdējo rindu, lai pārietu no baitiem uz virkni (dekodēšanā izmantojot utf-8), jo priekšpēdējā rindiņa sākumā parādīs b. Programmas iznākums ir šāds:

Tagad mēs dodamies apskatīt citu bibliotēku, piemēram, gzip.

2. Gzip modulis


Iepriekš redzamie piemēri ir derīgi šai bibliotēkai, aplūkosim 1. piemēru tādu pašu kā iepriekšējo, tikai mainot bibliotēku.

1. piemērs
Mūsu kods ir šāds, tāds pats kā iepriekšējais, mainot zlib uz gzip:

 importēt gzip line = b "Šis ir tikai tests apmācībai, kas jāpublicē Solvetic" line_compress = gzip.compress (line) print ("Nesaspiests izmērs% d"% len (line)) print ("Saspiests izmērs% d" % len (line_compress))
Ja mēs izpildām, mums ir šāda izvade:

Kompresija sver vairāk nekā nesaspiesta. Ja mainām tekstu uz lielāku un izpildām:

Tagad, ja esat uzlabojis izmēru, bet tomēr labāk saspiežat zlib, tad tiek veikta uztveršana, pirmajā izpildē tiek izmantots zlib, bet otrajā - gzip.

Apskatīsim šādu piemēru, kas būs pēdējais.

2. piemērs
Tagad mēs rakstīsim un lasīsim no faila, kods ir šāds:

 importēt gzip fw = gzip.open ('test.txt.gz', 'wb') fw.write (b "Gzip testēšana") fw.close () fr = gzip.open ('test.txt.gz', ' rb ') drukāt (fr.read (). atšifrēt ("utf-8")) fr.close ()
Jūs redzat, ka mēs nerunājam par iespējamiem izņēmumiem, kas var rasties, tas ir izlaists, lai piemērs būtu īsāks un tiešāks. Ja mēs izpildām kodu, mums ir šāda izvade:

Mēs esam redzējuši dažus zlib un gzip bibliotēku izmantošanas piemērus. Jūs varat iepazīties ar oficiālo Python dokumentāciju, lai padziļinātu un labāk apskatītu šos un iepriekš minētos moduļus. Un, ja jūs interesē, mēs atstājam jums saiti uz citu Python apmācību: Serializēt un deserializēt.

Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu
wave wave wave wave wave