Kursus Pengembangan Python Lanjutan
Bab
>
Tingkat

Modul Serialisasi
Modul Kompresi

Tujuan

Ambil pesan dan pesanan dan kompres untuk pengarsipan dan transmisi.

Ada beberapa instruksi konstruksi, pengiriman dan manifest yang telah diajukan dan perlu dipindahkan atau diarsipkan. Meskipun ini bisa dikirim secara manual dengan mengirim semuanya satu per satu, cara yang baik untuk melakukan ini adalah dengan mengompresi dan mendekomresi file, lalu menyimpannya atau mengirimkannya. Untuk melakukan ini, Anda dapat menggunakan modul kompresi untuk mengurangi ukuran file dan membuat informasi lebih mudah dikelola. Tidak seperti masalah lain yang kita selesaikan di mana kita mempelajari dan menggunakan satu modul, ada beberapa modul kompresi yang dapat kita gunakan dengan pilihan fungsi yang terbatas. Berikut ini:

Untuk kecepatan kompresi cepat dan kompresi rendah, gunakan modul zlib dengan menambahkan import zlib. Untuk tujuan kita, kita akan menggunakan fungsi berikut: zlib.compress(), yang menggunakan satu argumen, yaitu informasi yang ingin Anda kompres. Argumen perlu dimasukkan sebagai byte bukan sebagai string.

Untuk kecepatan kompresi sedang dan kompresi sedang, gunakan modul bz2 dengan menambahkan import bz2. Untuk tujuan kita, kita akan menggunakan fungsi-fungsi berikut:

  • bz2.compress(), menggunakan satu argumen, yaitu informasi yang ingin Anda kompres.
  • bz2.decompress(), menggunakan satu argumen, yaitu informasi yang ingin Anda dekompresi. Argumen perlu dimasukkan sebagai byte bukan sebagai string.

Argumen perlu dimasukkan sebagai byte bukan sebagai string.

Untuk kompresi tinggi tetapi kecepatan kompresi lambat, gunakan modul lzma dengan menambahkan import lzma. Untuk tujuan kita, kita akan menggunakan kelas dan fungsi berikut:

  • lzma.LZMACompressor(): Kelas yang digunakan untuk membuat objek kompresi yang memungkinkan Anda mengaktifkan compressor.
  • compress(): menggunakan satu argumen, yaitu informasi yang ingin Anda kompres. Argumen perlu dimasukkan sebagai byte bukan sebagai string. Argumen perlu dimasukkan sebagai byte bukan sebagai string.

Selain modul-modul ini, kita akan menggunakan fungsi bytes(), yang memungkinkan Anda mengonversi string menjadi byte yang akan berguna untuk kompresi. Fungsi ini mengambil dua argumen, string yang ingin Anda konversi dan formatnya, yang untuk tujuan kita adalah 'utf-8'.

Ada tiga konstanta yang berisi data yang perlu dikompresi, yaitu red_message, blue_message dan green_message. Untuk memulai, berjalanlah ke tanda X emas di atas karpet merah, buat variabel bernama red_bytes. Ambil konstanta red_message dan konversi pesannya menjadi byte agar data dapat dikompresi, dengan menggunakan fungsi bytes() berformat 'utf-8', seperti ini: red_bytes = bytes(red_message, 'utf-8').

Buat variabel bernama red_compression dan simpan nilai dari zlib.compress(). Gunakan red_bytes sebagai argumen yang akan mengompresi data, seperti ini: red_compression = zlib.compress(red_bytes). Setelah data dikompresi, gunakan fungsi display() yang sudah ditulis sebelumnya di editor kode dan tambahkan variabel red_message dan red_compression sebagai argumen untuk membaca pesan dan melihat data kompresi.

Berjalanlah ke tanda X terang di atas karpet merah dan hadap meja, buat dua variabel bernama: message_length dan compression_length. Dalam variabel ini kita akan menyimpan panjang karakter data baik sebelum maupun sesudah kompresi menggunakan fungsi len(). Misalnya, untuk message_length dapatkan panjang red_message, seperti ini: message_length = len(red_message). Lakukan hal yang sama untuk compression_length dengan menyimpan len() dari red_compression.

Setelah kedua variabel terisi, gunakan fungsi write() yang sudah ditulis sebelumnya dan masukkan message_length dan compression_length sebagai argumen untuk memverifikasi ukuran kompresi. Ini menunjukkan seberapa banyak file dikompresi relatif terhadap saat tidak dikompresi.

Berjalanlah ke tanda X gelap di atas karpet biru, hadap komputer. Buat variabel bernama blue_bytes dan konversi blue_message menjadi byte menggunakan fungsi bytes() dengan cara yang sama seperti pada red_message. Ambil konstanta blue_message dan kompres dengan menyimpan nilai dari bz2.compress() dan memasukkan blue_bytes sebagai argumen untuk mengompresi data, seperti ini: blue_message = bz2.compress(blue_bytes).

Buat variabel bernama blue_decompress dan simpan nilai dari bz2.decompress() dan tambahkan blue_message sebagai argumen untuk melihat data setelah dekompresi. Tambahkan variabel blue_message dan blue_decompress ke fungsi display() yang sudah ditulis sebelumnya untuk melihat varian terkompresi dan terdekompresi dari data pesan.

Menuju tanda X gelap di atas karpet hijau dan buat objek bernama compressor serta isi dengan lzma.LZMACompressor(), ini akan membuat objek kompresor yang dapat digunakan dengan fungsi-fungsi lzma. Buat variabel bernama green_bytes dan ubah green_message ke dalam format byte menggunakan fungsi bytes() dengan cara yang sama seperti pada red_message dan blue_message.

Buat variabel bernama green_compression dan simpan compressor.compress() sebagai nilainya, menambahkan green_bytes sebagai argumen. Ini akan memungkinkan Anda mengompresi data pesan menggunakan objek kompresor. Pada fungsi display() yang sudah ditulis sebelumnya, tambahkan variabel green_message dan green_compression sebagai argumen untuk melihat pesan dan data terkompresi.

Berjalanlah ke tanda X terang di atas karpet hijau dan hadap meja, ubah kedua variabel bernama: message_length dan compression_length. Dalam variabel ini kita akan menyimpan panjang karakter data baik sebelum maupun sesudah kompresi menggunakan fungsi len(). Untuk message_length dapatkan panjang green_message dengan len(). Lakukan hal yang sama untuk compression_length dengan menyimpan len() dari green_compression. Setelah kedua variabel terisi, gunakan fungsi write() yang sudah ditulis sebelumnya dan masukkan message_length dan compression_length sebagai argumen untuk memverifikasi ukuran kompresi dan menyelesaikan level.

Buku Kode