Coding for KidsCoding for Kids
Tahap KreatifCabaranPanduan Guru
Undi untuk ciri
Kursus Pembangunan Python Lanjutan
Bab
>
Tahap

Modul Serialisasi
Modul Pemampatan

Objektif

Ambil mesej dan arahan dan mampatkan mereka untuk pengarkiban dan pemindahan.

Terdapat beberapa arahan pembinaan, penghantaran dan manifest yang telah diserahkan dan perlu dipindahkan atau diarkibkan. Walaupun ini boleh dihantar dengan menghantar semuanya secara manual, cara yang baik untuk melakukannya adalah dengan memampatkan dan menyahmampatkan fail kemudian menyimpan atau menghantarnya. Untuk melakukan ini, anda boleh menggunakan modul pemampatan untuk mengurangkan saiz fail dan memudahkan pengurusan maklumat. Tidak seperti masalah lain yang telah kita selesaikan di mana kita belajar dan menggunakan satu modul sahaja, terdapat beberapa modul pemampatan yang boleh kita gunakan dengan pilihan fungsi yang kecil. Fungsi-fungsinya adalah seperti berikut:

Untuk kelajuan pemampatan cepat dan pemampatan yang rendah, gunakan modul zlib, dengan menambah import zlib. Untuk tujuan kita, kita akan menggunakan fungsi berikut: zlib.compress(), yang menggunakan satu argumen, iaitu maklumat yang ingin anda mampatkan. Argumen perlu dimasukkan sebagai bait dan bukannya rentetan.

Untuk kelajuan pemampatan sederhana dan pemampatan sederhana, gunakan modul bz2, dengan menambah import bz2. Untuk tujuan kita, kita akan menggunakan fungsi berikut:

  • bz2.compress(), menggunakan satu argumen, iaitu maklumat yang ingin anda mampatkan.
  • bz2.decompress(), menggunakan satu argumen, iaitu maklumat yang ingin anda mampatkan. Ia perlu dimasukkan sebagai bait dan bukannya rentetan.

Argumen perlu dimasukkan sebagai bait dan bukannya rentetan.

Untuk pemampatan tinggi tetapi kelajuan pemampatan yang perlahan, gunakan modul lzma, dengan menambah import lzma. Untuk tujuan kita, kita akan menggunakan kelas dan fungsi berikut:

  • lzma.LZMACompressor(): Kelas yang digunakan untuk mencipta objek pemampat yang membolehkan anda mengaktifkan pemampat.
  • compress(): menggunakan satu argumen, iaitu maklumat yang ingin anda mampatkan. Ia perlu dimasukkan sebagai bait dan bukannya rentetan. Argumen perlu dimasukkan sebagai bait dan bukannya rentetan.

Selain daripada modul-modul ini, kita akan menggunakan fungsi bytes(), yang membolehkan anda menukar rentetan kepada bait yang akan berguna untuk pemampatan. Ia mengambil dua argumen, rentetan yang ingin anda tukar dan format, yang untuk tujuan kita adalah 'utf-8'.

Terdapat tiga pemalar yang mengandungi data yang perlu dimampatkan, iaitu dinamakan red_message, blue_message dan green_message. Untuk memulakan, berjalan ke tanda X emas di atas karpet merah, cipta pembolehubah bernama red_bytes. Ambil pemalar red_message dan tukarkan mesej tersebut kepada bait supaya data boleh dimampatkan, dengan menggunakan fungsi bytes() yang diformatkan kepada 'utf-8', seperti ini: red_bytes = bytes(red_message, 'utf-8').

Cipta pembolehubah bernama red_compression dan simpan nilai zlib.compress(). Gunakan red_bytes sebagai argumen yang akan memampatkan data, seperti ini: red_compression = zlib.compress(red_bytes). Setelah data dimampatkan, gunakan fungsi display() yang telah ditulis terlebih dahulu di editor kod dan tambahkan pembolehubah red_message dan red_compression sebagai argumen untuk membaca mesej dan melihat data pemampatan.

Berjalan ke tanda X terang di atas karpet merah dan hadapi meja, cipta dua pembolehubah bernama: message_length dan compression_length. Dalam pembolehubah ini kita akan menyimpan panjang aksara data sebelum dan selepas pemampatan menggunakan fungsi len(). Sebagai contoh, untuk message_length dapatkan panjang red_message, seperti ini: message_length = len(red_message). Lakukan perkara yang sama untuk compression_length dengan menyimpan len() daripada red_compression.

Setelah kedua-dua pembolehubah diisi, gunakan fungsi write() yang telah ditulis terlebih dahulu dan masukkan message_length dan compression_length sebagai argumen untuk mengesahkan saiz pemampatan. Ini menunjukkan berapa banyak fail dimampatkan berbanding apabila ia tidak dimampatkan.

Berjalan ke tanda X gelap di atas karpet biru, hadapi komputer. Cipta pembolehubah bernama blue_bytes dan tukarkan blue_message kepada bait menggunakan fungsi bytes() dengan cara yang sama seperti yang anda lakukan dengan red_message. Ambil pemalar blue_message dan mampatkan dengan menyimpan nilai bz2.compress() dan memasukkan blue_bytes sebagai argumen untuk memampatkan data, seperti ini: blue_message = bz2.compress(blue_bytes).

Cipta pembolehubah bernama blue_decompress dan simpan nilai bz2.decompress() dan tambahkan blue_message sebagai argumen untuk melihat data selepas penyahmampatan. Tambahkan pembolehubah blue_message dan blue_decompress kepada fungsi display() yang telah ditulis terlebih dahulu untuk melihat varian mesej data yang dimampatkan dan tidak dimampatkan.

Bergerak ke tanda X gelap di atas karpet hijau dan cipta objek bernama compressor serta isikan dengan lzma.LZMACompressor(), ini akan mencipta objek pemampat yang boleh digunakan dengan fungsi lzma. Cipta pembolehubah bernama green_bytes dan tukarkan green_message kepada format bait menggunakan fungsi bytes() dengan cara yang sama seperti yang anda lakukan dengan red_message dan blue_message.

Cipta pembolehubah bernama green_compression dan simpan compressor.compress() sebagai nilai, dengan menambahkan green_bytes sebagai pembolehubah. Ini akan membolehkan anda memampatkan data mesej menggunakan objek pemampat. Pada fungsi display() yang telah ditulis terlebih dahulu, tambahkan pembolehubah green_message dan green_compression sebagai argumen untuk melihat mesej dan data yang dimampatkan.

Berjalan ke tanda X terang di atas karpet hijau dan hadapi meja, ubah kedua-dua pembolehubah bernama: message_length dan compression_length. Dalam pembolehubah ini kita akan menyimpan panjang aksara data sebelum dan selepas pemampatan menggunakan fungsi len(). Untuk message_length dapatkan panjang green_message dengan len(). Lakukan perkara yang sama untuk compression_length dengan menyimpan len() daripada green_compression. Setelah kedua-dua pembolehubah diisi, gunakan fungsi write() yang telah ditulis terlebih dahulu dan masukkan message_length dan compression_length sebagai argumen untuk mengesahkan saiz pemampatan dan menyelesaikan tahap.

Buku Kod