Modul gzip python

Modul gzip python

Dalam pelajaran ini, kita akan belajar tentang bagaimana kita dapat menggunakan modul gzip Python untuk membaca & menulis ke dalam file terkompresi dengan Python. Fitur terbesar yang diberikan modul ini kepada kita adalah bahwa kita dapat memperlakukan file terkompresi sebagai objek File normal yang menyelamatkan kita dari kerumitan pengelolaan file dan siklus hidupnya dalam kode kita dan memungkinkan kita untuk fokus pada logika bisnis inti program. Modul gzip memberi kami fitur yang hampir sama dengan program GNU sepertigunzip dan gzip.

Menulis File Terkompresi dengan open()

Kita akan mulai dengan contoh dasar di mana kita dapat membuat file gzip dan menulis beberapa data ke dalamnya. Untuk ini, kita perlu membuat file dan membukanya dengan cara tulis agar data dapat dimasukkan ke dalamnya. Mari kita lihat contoh program yang dengannya kita dapat menulis data ke dalam file gzip:

import gzip
import io
import os

output_file = 'linxhint_demo.txt.gz'
write_cara = 'wb'

with gzip.open(output_file, write_cara) as output:
with io.TextIOWrapper(output, encoding='utf-8') as encode:
encode.write('We can write anything we want to the file.n')

print(output_file,
'contains', os.stat(output_file).st_size, 'bytes')
os.system('file -b --mime {}'.format(output_file))

Inilah yang kami dapatkan kembali dengan perintah ini:

Writing to zip file

Jika sekarang Anda melihat struktur folder tempat Anda menjalankan skrip ini, seharusnya ada file baru bernama dengan apa yang kami sediakan dalam program kami di atas.

Menulis beberapa baris ke dalam file terkompresi

Kami juga dapat menulis beberapa baris atau sebenarnya sejumlah baris dalam file gzip kami dengan cara yang sangat mirip seperti yang kami lakukan pada contoh sebelumnya. Untuk membuat contoh ini berbeda, kita akan menggunakan modul itertools juga. Mari kita lihat contoh programnya:

import gzip
import io
import os
import itertools

output_file = 'linxhint_demo.txt.gz'
write_cara = 'wb'

with gzip.open(output_file, write_cara) as output:
with io.TextIOWrapper(output, encoding='utf-8') as enc:
enc.writelines(
itertools.repeat('LinuxHint, repeating same line!.n', 10)
)

os.system('gzcat linxhint_demo.txt.gz')

Mari kita lihat output untuk perintah ini:

Writing multiple lines

Membaca Data Terkompresi

Kami juga dapat membaca file terkompresi yang kami buat pada contoh terakhir menggunakan modul gzip dengan panggilan yang sangat sederhana untuk membuka fungsi:

import gzip
import io
import os

file_name = 'linxhint_demo.txt.gz'
file_cara = 'rb'

with gzip.open(file_name, file_cara) as input_file:
with io.TextIOWrapper(input_file, encoding='utf-8') as dec:
print(dec.read())

Inilah yang kami dapatkan kembali dengan perintah ini:

Reading a gzip file

Membaca Aliran

Karena fakta bahwa file teks bisa berukuran sangat besar, sebaiknya buka file-file ini dalam aliran daripada memuat file lengkap dalam satu objek yang menempati banyak memori sistem dan dalam beberapa kasus bahkan dapat menyebabkan proses untuk crash sepenuhnya. Mari kita lihat contoh program yang membaca file terkompresi yang diberikan dalam aliran:

import gzip
from io import BytesIO
import binascii

cara_write = 'wb'
cara_read = 'rb'

non_compressed = b'Repeated line x times.n' * 8
print('Non compressed Data:', len(non_compressed))
print(non_compressed)

buf = BytesIO()
with gzip.GzipFile(cara=ca ra_write, fileobj=buf) as file:
file.write(non_compressed)

compressed = buf.getvalue()
print('Compressed Data:', len(compressed))
print(binascii.hexlify(compressed))

in_buffer = BytesIO(compressed)
with gzip.GzipFile(cara=cara_read, fileobj=in_buffer) as file:
read_data = file.read(len(non_compressed))

print('nReading it again:', len(read_data))
print(read_data)

Mari kita lihat output untuk perintah ini:

Reading gzip file in a Stream

Meskipun programnya agak lama, kami sebenarnya hanya menggunakan modul Python untuk membuka file dan mengalirkan konten ke konsol dengan objek pembaca buffer.

Kesimpulan

Dalam pelajaran ini, kita melihat bagaimana kita dapat menggunakan modul gzip Python untuk mengompresi dan mendekompresi file dengan Python. Fitur terbesar yang disediakan perpustakaan ini kepada kami adalah kami dapat memperlakukan file terkompresi sebagai objek File biasa.

Baca lebih banyak posting berbasis Python di sini.

Related Posts