Coding for KidsCoding for Kids
Niveluri CreativeProvocăriGhid pentru Profesori
Votează pentru funcții
Curs Avansat de Dezvoltare Python
Capitolul
>
Nivel

Module de serializare
Module de compresie

Obiectiv

Ia mesajele și comenzile și comprimă-le pentru arhivare și transmitere.

Există mai multe instrucțiuni de construcție, livrări și manifeste care au fost trimise și trebuie transferate sau arhivate. Deși acestea pot fi trimise manual, o metodă bună de a face acest lucru este comprimarea și decompresarea fișierelor, apoi stocarea sau trimiterea lor. Pentru a face acest lucru, poți folosi module de compresie pentru a micșora dimensiunea fișierelor și pentru a face informațiile mai ușor de gestionat. Spre deosebire de alte probleme rezolvate, în care am învățat și am folosit un singur modul, există mai multe module de compresie pe care le putem folosi cu o mică selecție de funcții. Acestea sunt următoarele:

Pentru o viteză mare de comprimare și o compresie scăzută, folosește modulul zlib, adăugând import zlib. Pentru scopurile noastre, vom folosi următoarea funcție: zlib.compress(), care folosește un argument, anume informația pe care dorești să o comprimi. Argumentul trebuie introdus ca bytes în loc de un șir de caractere.

Pentru o viteză medie de comprimare și o compresie medie, folosește modulul bz2, adăugând import bz2. Pentru scopurile noastre, vom folosi următoarele funcții:

  • bz2.compress(), folosește un argument, anume informația pe care dorești să o comprimi.
  • bz2.decompress(), folosește un argument, anume informația pe care dorești să o comprimi. Trebuie introdus ca bytes în loc de un șir de caractere.

Argumentele trebuie introduse ca bytes în loc de un șir de caractere.

Pentru o compresie ridicată, dar cu o viteză de comprimare lentă, folosește modulul lzma, adăugând import lzma. Pentru scopurile noastre, vom folosi următoarele clase și funcții:

  • lzma.LZMACompressor(): Clasă folosită pentru a crea obiecte de compresie care îți permit să activezi un compresor.
  • compress(): folosește un argument, anume informația pe care dorești să o comprimi. Trebuie introdus ca bytes în loc de un șir de caractere. Argumentul trebuie introdus ca bytes în loc de un șir de caractere.

În plus față de aceste module, vom folosi funcția bytes(), care îți permite să convertești șiruri în bytes, lucru util pentru comprimare. Aceasta primește două argumente, șirul pe care dorești să îl convertești și formatul, care pentru scopurile noastre este 'utf-8'.

Există trei constante care conțin date ce trebuie comprimate, acestea fiind denumite red_message, blue_message și green_message. Pentru început, mergi la semnul X auriu de peste covorul roșu, creează o variabilă numită red_bytes. Ia constanta red_message și convertește mesajul în bytes, astfel încât datele să poată fi comprimate, folosind funcția bytes() formatată la 'utf-8', astfel: red_bytes = bytes(red_message, 'utf-8').

Creează o variabilă numită red_compression și stochează valoarea lui zlib.compress(). Folosește red_bytes ca argument pentru a comprima datele, astfel: red_compression = zlib.compress(red_bytes). Odată ce datele au fost comprimate, folosește funcția pre-scrisă display() din editorul de cod și adaugă variabilele red_message și red_compression ca argumente pentru a citi mesajul și a vizualiza datele de compresie.

Mergi la semnul X luminos de peste covorul roșu și îndreaptă-te spre birou, creează două variabile numite: message_length și compression_length. În aceste variabile vom stoca lungimea în caractere a datelor, atât înainte, cât și după compresie, folosind funcția len(). De exemplu, pentru message_length obține lungimea lui red_message, astfel: message_length = len(red_message). Procedează la fel pentru compression_length, stocând len(red_compression).

Odată ce ambele variabile au fost populate, folosește funcția pre-scrisă write() și inserează message_length și compression_length ca argumente pentru a verifica dimensiunile de compresie. Acest lucru demonstrează cât de mult este comprimat fișierul în raport cu starea sa necomprimată.

Mergi la semnul X întunecat de peste covorul albastru, îndreaptă-te spre computer. Creează o variabilă numită blue_bytes și convertește blue_message în bytes folosind funcția bytes() în același mod ca și cu red_message. Ia constanta blue_message și comprima-o stocând valoarea lui bz2.compress() și inserând blue_bytes ca argument pentru a comprima datele, astfel: blue_message = bz2.compress(blue_bytes).

Creează o variabilă numită blue_decompress și stochează valoarea lui bz2.decompress() și adaugă blue_message ca argument pentru a vizualiza datele după decompresie. Adaugă variabilele blue_message și blue _decompress la funcția pre-scrisă display() pentru a vizualiza variantele comprimate și decompresate ale datelor mesajului.

Mergi la semnul X întunecat de peste covorul verde și creează un obiect numit compressor și populază-l cu lzma.LZMACompressor(). Acest lucru va crea un obiect compresor care poate fi folosit cu funcțiile lzma. Creează o variabilă numită green_bytes și transformă green_message în format bytes folosind funcția bytes() în același mod ca și cu red_message și blue_message.

Creează o variabilă numită green_compression și stochează compressor.compress() ca valoare, adăugând green_bytes ca argument. Acest lucru îți va permite să comprimi datele mesajului folosind obiectul compresor. La funcția pre-scrisă display(), adaugă variabilele green_message și green_compression ca argumente pentru a vizualiza mesajul și datele comprimate.

Mergi la semnul X luminos de peste covorul verde și îndreaptă-te spre birou, modifică cele două variabile numite: message_length și compression_length. În aceste variabile vom stoca lungimea în caractere a datelor, atât înainte, cât și după compresie, folosind funcția len(). Pentru message_length obține lungimea lui green_message folosind len(). Procedează la fel pentru compression_length, stocând len(green_compression). Odată ce ambele variabile au fost populate, folosește funcția pre-scrisă write() și inserează message_length și compression_length ca argumente pentru a verifica dimensiunile de compresie și a finaliza nivelul.

Carte de Cod