Menulis dan Membaca File CSV di Python

Ridwan Fajar 23 Januari 2017

Menulis dan Membaca File CSV di Python

CSV atau comma separated value adalah salah satu tipe file yang digunakan secara luas di dunia programming. Tidak hanya itu CSV pun sering digunakan dalam pengolahan informasi yang dihasilkan spreadsheet untuk diproses lebih lanjut melalui mesin analitik. CSV pun dianggap sebagai file yang agnostik karena dapat digunakan oleh berbagai database untuk proses backup data.

Menulis File CSV

Sekarang kita akan mencoba membuat sebuah file CSV sederhana yang menulis sejumlah tuple yang berisi data siswa. Hasilnya akan dihasilkan sebuah file CSV yang satu tempat dengan file Python penulis file CSV.

Berikut adalah kode untuk menulis file CSV dengan menggunakan built-in module csv yang dimiliki Python:

import csv

siswa = [
	('arslan', 'A', 90),
	('bayu', 'B', 85),
	('niko', 'A', 80),
	('abdul', 'B', 90),
	('dahlan', 'C', 70)
]

# tentukan lokasi file, nama file, dan inisialisasi csv
f = open('siswa.csv', 'w')
w = csv.writer(f)
w.writerow(('Nama','Kelas','Nilai'))

# menulis file csv
for s in siswa:
	w.writerow(s)

# menutup file csv
f.close()

Bila kita jalankan kode diatas dengan perintah "python write-to-csv.py" di konsol, maka akan muncul file dengan isi sebagai berikut:

Nama,Kelas,Nilai
arslan,A,90
bayu,B,85
niko,A,80
abdul,B,90
dahlan,C,70

Membaca File CSV

Sekarang kita akan mencoba membaca sbeuah file CSV yang telah dihasilkan aplikasi atau program lain. Di Python, hasil pembacaan setiap baris pada file CSV akan dikonversi menjadi list Python.

Berikut adalah contoh kode untuk membaca file CSV dengan kasus yang sangat sederhana:

import csv

# tentukan lokasi file, nama file, dan inisialisasi csv
f = open('siswa.csv', 'r')
reader = csv.reader(f)

# membaca baris per baris
for row in reader:
	print row

# menutup file csv
f.close()

Bila kita jalankan kode diatas dengan perintah "python read-from-csv.py" di konsol, maka akan muncul output dengan isi sebagai berikut:

$ python read-from-csv.py
['Nama', 'Kelas', 'Nilai']
['arslan', 'A', '90']
['bayu', 'B', '85']
['niko', 'A', '80']
['abdul', 'B', '90']
['dahlan', 'C', '70']

(rfs/python)