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