Kali ini contoh kasusnya adalah client memberikan folder yang berisi banyak file log dari aplikasi CRM, file-filenya di kompres dengan zip. Untuk itu client minta semua file didalam folder tersebut dibaca, lalu diambil total berapa total data yang diproses oleh CRM mereka.

Kali ini kita akan menggunakan Python, karena mereka minta dibuat dengan Python :D

Sebagai contoh kita akan membuat file price.txt yang akan digunakan dalam eksperimen ini

# buat 100 baris file
for i in {1..100}; do echo "price: $RANDOM" >> price.txt; done
# buat gzip file
gzip price.txt
# file diatas akan membuat file price.txt.gz

Ekstrak Gzip File

Untuk mengkesktrak file gz dengan Python, kita perlu mengimpor modul gzip. Setelah file tersebut di ekstrak, tampilkan setiap baris yang ada dengan menggunakan looping, baris perbaris.

Buat file dengan nama parse.py, yang berisi

#!/usr/bin/env python3
import gzip
with gzip.open('price.txt.gz', 'rb') as lines:
    for line in lines:
      print(line)
python3 parse.py

angka yang ditampilan disini akan berbeda dengan file yang anda buat, karena waktu generate file price.txt kita menggunakan angka acak.

Split (Pecah) String

Disini kita mengambil data dari file yang baru di ekstrak. Dari hasil looping diatas, type datanya byte, agar bisa dipecah, pertama kita akan ubah menjadi string dengan str

#!/usr/bin/env python3
import gzip
with gzip.open('price.txt.gz', 'rb') as lines:
    for line in lines:
      # ubah byte menjadi string
      strline = str(line, 'utf-8')
      # ambil angka dari setiap baris setelah kata kunci price:
      number = strline.split('price: ')[1]
      print(number)

jalankan script diatas

python3 parse.py
# output
...
27589
4248
18554
...

dengan format ini kita sudah mendapatkan angka yang kita perlukan, langkah selanjutnya menghitung jumlah angka tersebut.

Menghitung Total Angka

Angka yang kita perlukan sudah didapat, tetapi dari code sebelumnya kita merubah byte menjadi string. Agar bisa menghitung jumlah total, kita harus merubah string tersebut menjadi integer

#!/usr/bin/env python3
import gzip
# nilai awal
total = 0
with gzip.open('price.txt.gz', 'rb') as lines:
    for line in lines:
      # ubah byte menjadi string
      strline = str(line, 'utf-8')
      # ambil angka dari setiap baris setelah kata kunci price:
      number = strline.split('price: ')[1]
      # ubah string jadi integer
      total += int(number)
print(total)

jalankan script diatas

python3 parse.py
# output
1499614

Leave a comment

Your email address will not be published. Required fields are marked *