Python

Modul Python gzip

Modul Python gzip

Dalam pelajaran ini, kita akan mengkaji tentang bagaimana kita dapat memanfaatkan Python gzip modul untuk membaca & menulis ke dalam fail yang dimampatkan di Python. Ciri terbesar yang diberikan modul ini kepada kami adalah kami dapat memperlakukan fail yang dimampatkan sebagai objek Fail biasa yang menyelamatkan kami dari kerumitan menguruskan fail dan kitaran hayatnya dalam kod kami dan membolehkan kami memberi tumpuan kepada logik perniagaan teras program.The gzip modul memberi kami ciri yang hampir sama dengan program GNU seperti senapang dan gzip.

Menulis Fail Mampat dengan terbuka ()

Kita akan mulakan dengan contoh asas di mana kita boleh membuat fail gzip dan menulis beberapa data ke dalamnya. Untuk ini, kita perlu membuat fail dan membukanya dengan mod penulisan supaya data dapat dimasukkan ke dalamnya. Mari lihat contoh program di mana kita dapat menulis data ke dalam fail gzip:

import gzip
import io
import os
output_file = 'linxhint_demo.txt.gz '
write_mode = 'wb'
dengan gzip.buka (output_file, write_mode) sebagai output:
dengan io.TextIOWrapper (output, encoding = 'utf-8') sebagai pengekodan:
mengekod.tulis ('Kami boleh menulis apa sahaja yang kami mahu ke fail.\ n ')
cetak (output_file,
'mengandungi', os.stat (output_file).st_size, 'bait')
os.sistem ('file -b --mime '.format (output_file))

Inilah yang kita dapat kembali dengan arahan ini:

Menulis ke fail zip

Sekiranya anda sekarang melihat struktur folder di mana anda menjalankan skrip ini, semestinya ada file baru bernama dengan apa yang kami sediakan dalam program kami di atas.

Menulis beberapa baris ke dalam fail yang dimampatkan

Kita juga boleh menulis beberapa baris atau sebilangan baris dalam fail gzip kita dengan cara yang sangat serupa seperti yang kita lakukan pada contoh sebelumnya. Untuk menjadikan contoh ini berbeza, kami juga akan menggunakan modul itertools. Mari lihat contoh program:

import gzip
import io
import os
import itertools
output_file = 'linxhint_demo.txt.gz '
write_mode = 'wb'
dengan gzip.buka (output_file, write_mode) sebagai output:
dengan io.TextIOWrapper (output, pengekodan = 'utf-8') sebagai enc:
enc.garis panduan (
itertools.ulangi ('LinuxHint, mengulangi baris yang sama!.\ n ', 10)
)
os.sistem ('gzcat linxhint_demo.txt.gz ')

Mari lihat output untuk arahan ini:

Menulis pelbagai baris

Membaca Data Mampat

Kami juga dapat membaca fail termampat yang kami buat pada contoh terakhir menggunakan modul gzip dengan panggilan yang sangat mudah buka fungsi:

import gzip
import io
import os
file_name = 'linxhint_demo.txt.gz '
file_mode = 'rb'
dengan gzip.buka (file_name, file_mode) sebagai input_file:
dengan io.TextIOWrapper (input_file, encoding = 'utf-8') sebagai dec:
cetak (dis.baca ())

Inilah yang kita dapat kembali dengan arahan ini:

Membaca fail gzip

Aliran Membaca

Kerana kenyataan bahawa fail teks berukuran sangat besar, adalah bijak untuk membuka fail-fail ini dalam aliran daripada memuatkan fail lengkap dalam satu objek yang menempati banyak memori sistem dan dalam beberapa kes bahkan menyebabkan proses tersebut terhempas sepenuhnya. Mari lihat contoh program yang membaca fail termampat yang diberikan dalam aliran:

import gzip
dari io import BytesIO
import binascii
mode_write = 'wb'
mode_read = 'rb'
tidak_kompresi = b'Garis berulang x kali.\ n '* 8
cetak ('Data tidak dimampatkan:', len (tidak dikompresi))
cetak (tidak dimampatkan)
buf = BytesIO ()
dengan gzip.GzipFile (mode = mode_write, fileobj = buf) sebagai fail:
fail.tulis (tidak dikompres)
dimampatkan = buf.nilai ()
cetak ('Data Mampat:', len (dimampatkan))
mencetak (binascii.hexlify (dimampatkan))
in_buffer = BytesIO (dimampatkan)
dengan gzip.GzipFile (mode = mode_read, fileobj = in_buffer) sebagai fail:
read_data = fail.baca (len (tidak dikompres))
cetak ('\ nBaca sekali lagi:', len (read_data))
cetak (baca_data)

Mari lihat output untuk arahan ini:

Membaca fail gzip dalam Aliran

Walaupun program agak panjang, kami sebenarnya hanya menggunakan modul Python untuk membuka fail dan mengalirkan kandungan ke konsol dengan objek pembaca yang disangga.

Kesimpulannya

Dalam pelajaran ini, kami melihat bagaimana kami dapat menggunakan modul gyz Python untuk memampatkan dan menyahmampatkan fail di Python. Ciri terbesar yang disediakan perpustakaan ini kepada kami adalah kami dapat memperlakukan fail yang dimampatkan sebagai objek Fail biasa.

Baca lebih banyak catatan berdasarkan Python di sini.

Kajian Tetikus Tanpa Wayar Microsoft Sculpt Touch
Saya baru-baru ini membaca mengenai Sentuhan Microsoft Sculpt tetikus tanpa wayar dan memutuskan untuk membelinya. Setelah menggunakannya sebentar, sa...
Trackpad dan Mouse Pointer pada skrin Windows AppyMouse untuk Tablet Windows
Pengguna tablet sering kehilangan penunjuk tetikus, terutama ketika mereka biasa menggunakan komputer riba. Telefon pintar dan tablet skrin sentuh dil...
Butang tetikus tengah tidak berfungsi pada Windows 10
The butang tetikus tengah membantu anda menelusuri halaman web dan skrin yang panjang dengan banyak data. Sekiranya ia berhenti, anda akan menggunakan...