Lompat ke konten Lompat ke sidebar Lompat ke footer

Menulis Berkas CSV dalam Python

Berkas CSV tidak hanya dapat dibaca menggunakan Python, tetapi juga dapat dibuat dan diisi menggunakan program. Kemampuan menulis berkas CSV sangat berguna ketika data yang dihasilkan oleh program perlu disimpan agar dapat digunakan kembali. Sebagai contoh, program dapat mengumpulkan data siswa, nilai, barang, transaksi, atau hasil perhitungan kemudian menyimpannya ke dalam berkas CSV.

Sebelum lebih lanjut mempelajari materi tentang Menulis Berkas CSV dalam Python, terlebih dahulu pelajari materi tentang: Direktori dalam Python, Berkas CSV dalam Python, dan Membaca Berkas CSV dalam Python.

Python menyediakan modul bawaan `csv` yang dapat digunakan untuk menulis data dengan cara yang sederhana. Modul tersebut menyediakan beberapa alat penting, seperti `csv.writer()` dan `csv.DictWriter()`.

Pengertian Menulis Berkas CSV

Menulis berkas CSV berarti membuat berkas baru atau memasukkan data ke dalam berkas CSV yang sudah tersedia.

Contoh data CSV:
Nama,  Umur, Kelas
Andi,  16,   10A
Budi,  17,   11B
Citra, 16,   10B


Data tersebut dapat dibuat langsung menggunakan Python. Setelah program dijalankan, data akan tersimpan dalam sebuah berkas dengan ekstensi `.csv`.

Modul csv

Python menyediakan modul `csv` untuk menangani data CSV.

Gunakan:
import csv

Setelah modul diimpor, fungsi untuk menulis data dapat digunakan. Dua alat utama yang perlu dipahami adalah:
  • `csv.writer()`
  • `csv.DictWriter()`

Membuat Berkas CSV

Berkas dapat dibuat menggunakan fungsi `open()` dengan mode `"w"`.

Contoh:
file = open("siswa.csv", "w")

Namun, penggunaan `with` lebih dianjurkan.
with open("siswa.csv", "w") as file:
pass


Jika `siswa.csv` belum tersedia, Python akan membuat berkas tersebut. Jika berkas sudah tersedia, mode `"w"` dapat mengganti isi lama.

Menggunakan newline

Ketika menulis CSV, sebaiknya gunakan `newline=""`.

Contoh:
with open("siswa.csv", "w", newline="") as file:
pass


Penggunaan ini membantu menghindari baris kosong tambahan pada beberapa sistem operasi.

Menggunakan Encoding

Untuk data teks, terutama data yang memiliki berbagai karakter, encoding dapat ditentukan.
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
pass


Penggunaan `encoding="utf-8"` membantu menjaga karakter teks tetap tersimpan dengan benar.

Menulis Data dengan csv.writer()

`csv.writer()` digunakan untuk membuat objek yang dapat menulis data ke dalam CSV.

Contoh:
import csv
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)


Setelah objek `penulis` dibuat, data dapat dimasukkan menggunakan `writerow()` atau `writerows()`.

Menulis Satu Baris

Fungsi `writerow()` digunakan untuk menulis satu baris.
import csv
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Nama", "Umur", "Kelas"])


Program tersebut membuat satu baris yang berisi nama kolom.

Hasil:
Nama,Umur,Kelas

Menulis Beberapa Baris

Setiap baris dapat ditulis menggunakan `writerow()`.
import csv
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Nama", "Umur", "Kelas"])
penulis.writerow(["Andi", 16, "10A"])
penulis.writerow(["Budi", 17, "11B"])
penulis.writerow(["Citra", 16, "10B"])


Hasil:
Nama,  Umur, Kelas
Andi,  16,   10A
Budi,  17,   11B
Citra, 16,   10B


Menulis Banyak Baris dengan writerows()

Jika banyak data sudah tersedia dalam bentuk daftar, `writerows()` dapat digunakan.

Contoh:
import csv
data = [
["Nama", "Umur", "Kelas"],
["Andi", 16, "10A"],
["Budi", 17, "11B"],
["Citra", 16, "10B"]
]
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerows(data)


Semua data akan ditulis ke dalam CSV.

Perbedaan writerow() dan writerows()


FungsiKegunaan
  • writerow()
  • Menulis satu baris
  • writerows()
  • Menulis banyak baris

Contoh `writerow()`:
penulis.writerow(["Andi", 16, "10A"])

Contoh `writerows()`:
penulis.writerows([
["Andi", 16, "10A"],
["Budi", 17, "11B"]
])


Menulis Data dari List

Data yang sudah disimpan dalam list dapat langsung ditulis ke CSV.
import csv
siswa = [
["Andi", 16, "10A"],
["Budi", 17, "11B"],
["Citra", 16, "10B"]
]
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
for data in siswa:
penulis.writerow(data)


Program tersebut menggunakan perulangan untuk menulis setiap data.

Menulis Data dengan DictWriter

Selain `csv.writer()`, Python menyediakan `csv.DictWriter()`. `DictWriter` cocok digunakan ketika data disimpan dalam bentuk kamus.

Contoh:
import csv
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
kolom = ["Nama", "Umur", "Kelas"]
penulis = csv.DictWriter(file, fieldnames=kolom)


`fieldnames` digunakan untuk menentukan nama kolom.

Menulis Header dengan writeheader()

Setelah membuat `DictWriter`, nama kolom dapat ditulis menggunakan `writeheader()`.
penulis.writeheader()

Contoh lengkap:
import csv
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
kolom = ["Nama", "Umur", "Kelas"]
penulis = csv.DictWriter(file, fieldnames=kolom)
penulis.writeheader()


Hasil:
Nama,Umur,Kelas

Menulis Data dengan writerow() pada DictWriter

Setelah header dibuat, data dapat ditulis menggunakan `writerow()`.
import csv
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
kolom = ["Nama", "Umur", "Kelas"]
penulis = csv.DictWriter(file, fieldnames=kolom)
penulis.writeheader()
penulis.writerow({
"Nama": "Andi",
"Umur": 16,
"Kelas": "10A"
})


Hasil:
Nama, Umur, Kelas
Andi, 16,   10A


Menulis Banyak Data dengan DictWriter

Jika terdapat banyak data, gunakan `writerows()`.
import csv
data = [
{"Nama": "Andi", "Umur": 16, "Kelas": "10A"},
{"Nama": "Budi", "Umur": 17, "Kelas": "11B"},
{"Nama": "Citra", "Umur": 16, "Kelas": "10B"}
]
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
kolom = ["Nama", "Umur", "Kelas"]
penulis = csv.DictWriter(file, fieldnames=kolom)
penulis.writeheader()
penulis.writerows(data)


Hasil:
Nama,  Umur, Kelas
Andi,  16,   10A
Budi,  17,   11B
Citra, 16,   10B


Perbedaan writer dan DictWriter


Fiturcsv.writer()csv.DictWriter()
  • Bentuk data
  • Daftar
  • Kamus
  • Menulis satu baris
  • writerow()
  • writerow()
  • Menulis banyak baris
  • writerows()
  • writerows()
  • Menulis nama kolom
  • Ditulis sebagai daftar
  • writeheader()
  • Akses berdasarkan nama kolom
  • Tidak
  • Ya

`csv.writer()` cocok digunakan ketika data tersedia dalam bentuk daftar.

Contoh:
["Andi", 16, "10A"]

Sedangkan `csv.DictWriter()` cocok ketika data disimpan dalam bentuk kamus.

Contoh:
{
"Nama":  "Andi",
"Umur":  16,
"Kelas": "10A"
}


Menambahkan Data ke CSV

Mode `"w"` akan menulis ulang isi berkas. Jika data lama perlu dipertahankan dan data baru hanya ditambahkan, gunakan mode `"a"`.

Contoh:
import csv
with open("siswa.csv", "a", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Dina", 17, "11A"])


Data Dina akan ditambahkan ke bagian akhir.

Perbedaan Mode w dan a


ModeKegunaan
  • "w"
  • Membuat atau menulis ulang berkas
  • "a"
  • Menambahkan data pada akhir berkas

Contoh mode `"w"`:
open("siswa.csv", "w")

Contoh mode `"a"`:
open("siswa.csv", "a")

Mode harus dipilih sesuai tujuan program.

Menulis CSV dengan Pemisah Titik Koma

CSV tidak selalu menggunakan koma sebagai pemisah. Beberapa data menggunakan titik koma. Untuk membuat CSV dengan pemisah titik koma, gunakan `delimiter`.
import csv
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file, delimiter=";")
penulis.writerow(["Nama", "Umur", "Kelas"])
penulis.writerow(["Andi", 16, "10A"])
penulis.writerow(["Budi", 17, "11B"])


Hasil:
Nama; Umur; Kelas
Andi; 16;   10A
Budi; 17;   11B


Menulis Data yang Mengandung Koma

Data tertentu dapat mengandung tanda koma.

Contohnya alamat:
Jalan Merdeka, Nomor 10

Modul `csv` dapat menangani kondisi tersebut.
import csv
with open("alamat.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Nama", "Alamat"])
penulis.writerow(["Andi", "Jalan Merdeka, Nomor 10"])


Hasil CSV akan menangani tanda koma pada alamat secara tepat.

Menulis Data Angka

Angka dapat langsung dimasukkan ke dalam daftar.
import csv
with open("nilai.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Nama", "Nilai"])
penulis.writerow(["Andi", 80])
penulis.writerow(["Budi", 75])
penulis.writerow(["Citra", 90])


Hasil:
Nama,  Nilai
Andi,  80
Budi,  75
Citra, 90


Python akan mengubah nilai tersebut menjadi bentuk yang sesuai ketika ditulis ke dalam berkas teks.

Menulis Data dari Perulangan

Data dapat dibuat melalui perulangan.

Contoh:
import csv
with open("angka.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Angka", "Kuadrat"])
for angka in range(1, 6):
penulis.writerow([angka, angka ** 2])


Hasil:
Angka, Kuadrat
1,     1
2,     4
3,     9
4,     16
5,     25


Cara tersebut berguna ketika data dibuat secara otomatis oleh program.

Menulis Data Nilai Siswa

Contoh program berikut membuat data nilai siswa.
import csv
data = [
["Andi", 80],
["Budi", 75],
["Citra", 90],
["Dina", 85]
]
with open("nilai.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Nama", "Nilai"])
penulis.writerows(data)


Hasil:
Nama,  Nilai
Andi,  80
Budi,  75
Citra, 90
Dina,  85


Menulis Data Nilai dengan DictWriter

Data yang sama dapat dibuat menggunakan `DictWriter`.
import csv
data = [
{"Nama": "Andi", "Nilai": 80},
{"Nama": "Budi", "Nilai": 75},
{"Nama": "Citra", "Nilai": 90},
{"Nama": "Dina", "Nilai": 85}
]
with open("nilai.csv", "w", newline="", encoding="utf-8") as file:
kolom = ["Nama", "Nilai"]
penulis = csv.DictWriter(file, fieldnames=kolom)
penulis.writeheader()
penulis.writerows(data)


Pendekatan ini lebih mudah dibaca ketika data memiliki banyak kolom.

Membuat CSV dari Data Pengguna

Data dari `input()` juga dapat disimpan ke CSV.

Contoh:
import csv
nama = input("Nama: ")
umur = int(input("Umur: "))
kelas = input("Kelas: ")
with open("siswa.csv", "a", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow([nama, umur, kelas])
print("Data berhasil disimpan")


Program tersebut menerima data dari pengguna kemudian menambahkannya ke dalam CSV.

Membuat Program Input Beberapa Data

Perulangan dapat digunakan jika data yang dimasukkan lebih dari satu.
import csv
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Nama", "Umur", "Kelas"])
for i in range(3):
nama = input("Nama: ")
umur = int(input("Umur: "))
kelas = input("Kelas: ")
penulis.writerow([nama, umur, kelas])
print("Semua data berhasil disimpan")


Program tersebut meminta data tiga kali kemudian menyimpannya ke dalam satu berkas CSV.

Menyimpan Hasil Perhitungan ke CSV

CSV juga dapat digunakan untuk menyimpan hasil perhitungan.

Contoh:
import csv
with open("hasil.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Angka", "Kuadrat", "Kubik"])
for angka in range(1, 6):
kuadrat = angka ** 2
kubik = angka ** 3
penulis.writerow([angka, kuadrat, kubik])


Hasil:
Angka, Kuadrat, Kubik
1,     1,       1
2,     4,       8
3,     9,       27
4,     16,      64
5,     25,      125


Menangani Kesalahan Saat Menulis

Kesalahan dapat terjadi ketika lokasi berkas tidak dapat digunakan atau terdapat masalah lain pada proses penulisan. Penanganan dapat dilakukan menggunakan `try` dan `except`.
import csv
try:
with open("data.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Nama", "Nilai"])
penulis.writerow(["Andi", 80)
print("Data berhasil disimpan")
except OSError:
print("Terjadi kesalahan saat menulis berkas")


Penanganan kesalahan membuat program lebih siap menghadapi kondisi yang tidak sesuai.

Kesalahan yang Sering Terjadi

Berikut dijelaskan beberapa contoh kesalahan yang sering terjadi ketika Menulis Berkas CSV dalam Python.

Menggunakan Mode w Tanpa Sengaja

Berikut dijelaskan jenis kesalahan menggunakan mode w tanpa sengaja.

Kode:
open("data.csv", "w")

dapat menghapus isi lama ketika data ditulis kembali. Jika data lama harus tetap dipertahankan, gunakan mode `"a"`.

Lupa newline

Ketika menulis CSV, sebaiknya gunakan:
newline=""

Contoh:
open("data.csv", "w", newline="")

Salah Menentukan Nama Kolom

Ketika menggunakan `DictWriter`, nama pada data harus sesuai dengan `fieldnames`.

Contoh:
kolom = ["Nama", "Umur"]

Maka data sebaiknya memiliki:
{"Nama": "Andi", "Umur": 16}

Lupa Menulis Header

Jika menggunakan `DictWriter`, header tidak otomatis ditulis hanya karena `fieldnames` sudah ditentukan.

Gunakan:
penulis.writeheader()

jika nama kolom perlu disimpan sebagai baris pertama.

Berikut diberikan contoh program lengkap dengan csv.writer().

Contoh:
import csv
data = [
["Andi", 16, "10A"],
["Budi", 17, "11B"],
["Citra", 16, "10B"]
]
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Nama", "Umur", "Kelas"])
penulis.writerows(data)
print("Data berhasil disimpan")


Program tersebut melakukan beberapa tahap:
  1. Membuat data siswa.
  2. Membuka berkas CSV.
  3. Membuat objek `writer`.
  4. Menulis nama kolom.
  5. Menulis seluruh data.
  6. Menutup berkas secara otomatis.

Berikut diberikan contoh program lengkap dengan DictWriter().

Contoh:
import csv
data = [
{"Nama": "Andi", "Umur": 16, "Kelas": "10A"},
{"Nama": "Budi", "Umur": 17, "Kelas": "11B"},
{"Nama": "Citra", "Umur": 16, "Kelas": "10B"}
]
kolom = ["Nama", "Umur", "Kelas"]
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.DictWriter(file, fieldnames=kolom)
penulis.writeheader()
penulis.writerows(data)
print("Data berhasil disimpan")


Alur Menulis Berkas CSV

Secara umum, proses menulis CSV dapat digambarkan sebagai berikut:
Siapkan data

Buka atau buat berkas

Buat csv.writer()
atau csv.DictWriter()

Tulis header jika diperlukan

Tulis data

Simpan dan tutup berkas


Pola tersebut dapat diterapkan pada berbagai jenis program.

Latihan

Berikut beberapa latihan untuk memperkuat pemahaman.

Latihan 1

Buat berkas `siswa.csv` menggunakan Python.

Latihan 2

Tuliskan nama kolom:
Nama,Umur,Kelas

Latihan 3

Tambahkan minimal lima data siswa menggunakan `writerow()`.

Latihan 4

Gunakan `writerows()` untuk menulis beberapa data sekaligus.

Latihan 5

Buat program yang menggunakan `DictWriter()`.

Latihan 6

Gunakan `writeheader()` untuk menulis nama kolom.

Latihan 7

Buat program yang meminta nama, umur, dan kelas melalui `input()` kemudian menyimpannya ke CSV.

Latihan 8

Buat program yang menambahkan data baru tanpa menghapus data lama.

Latihan 9

Buat berkas `nilai.csv` yang berisi nama dan nilai siswa.

Latihan 10

Buat program yang menghasilkan data angka, kuadrat, dan kubik kemudian menyimpannya dalam CSV.

Kesimpulan

Menulis berkas CSV menggunakan Python dapat dilakukan dengan mudah menggunakan modul `csv`. Dua alat utama yang perlu dipahami adalah `csv.writer()` dan `csv.DictWriter()`.

`csv.writer()` cocok digunakan ketika data tersedia dalam bentuk daftar. Data dapat ditulis menggunakan `writerow()` untuk satu baris atau `writerows()` untuk banyak baris.

Sementara itu, `csv.DictWriter()` cocok digunakan ketika data disimpan dalam bentuk kamus. Nama kolom dapat ditentukan melalui `fieldnames`, kemudian ditulis menggunakan `writeheader()`. Data dapat dimasukkan menggunakan `writerow()` atau `writerows()`.

Hal penting lainnya adalah memahami mode `"w"` dan `"a"`. Mode `"w"` digunakan untuk membuat atau menulis ulang berkas, sedangkan mode `"a"` digunakan untuk menambahkan data ke bagian akhir berkas.

Dengan menguasai cara menulis CSV, program Python dapat menyimpan hasil pengolahan data secara terstruktur sehingga data dapat digunakan kembali pada proses berikutnya.

5 komentar untuk "Menulis Berkas CSV dalam Python"

  1. Ini judul skripsinya belum genap 100?

    BalasHapus
    Balasan
    1. Iya ini judul skripsinya cuma 2, yang lainnya mana.

      Hapus
    2. Sabar, kakak, sisa judul skripsinya juga sedang pengetikkan.

      Hapus
  2. Apakah ada judul skripsi selain jurusan informatika?

    BalasHapus
    Balasan
    1. Ada, judul skripsi lain bisa dilihat di halaman utama.

      Hapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -