Langsung ke konten

Menulis File di Python: Mode w dan a

Mode w dan a menyimpan hasil program ke file di Python. Artikel ini membahas pemakaian write dan writelines serta perbedaan menimpa dan menambahkan isi file.

Belajar Python Level Basic
Belajar Python Level Basic
Advertisement

Artikel ini bagian dari seri Belajar Python Level Basic di hanifmu.com. Di artikel sebelumnya kita sudah membahas Membaca File. Sekarang kita simpan data ke file.

Membaca file saja belum membuat program berguna. Agar hasil kerja bisa dibuka lagi besok atau dibagikan ke orang lain, program harus bisa menuliskannya ke disk.

Function write() menulis string ke file. Sebelum menulis, buka file dengan mode "w":

file = open("hasil.txt", "w")
file.write("Halo, dunia!\n")
file.close()

Setelah dijalankan, akan terbentuk file hasil.txt berisi:

Halo, dunia!

Perhatikan \n di akhir teks. write() tidak menambahkan baris baru sendiri, jadi kamu harus menuliskannya manual kalau ingin pindah baris.

file = open("hasil.txt", "w")
file.write("Baris pertama\n")
file.write("Baris kedua\n")
file.write("Baris ketiga\n")
file.close()

Mode w: Menimpa

Mode "w" membuka file untuk ditulis. Yang penting diingat: mode ini menghapus isi lama. Kalau file sudah ada, isinya diganti dari awal.

# hasil.txt sebelumnya berisi 3 baris

file = open("hasil.txt", "w")
file.write("Isi baru\n")
file.close()

Sekarang hasil.txt hanya berisi satu baris. Tiga baris sebelumnya hilang tanpa peringatan.

Kalau file belum ada, mode "w" akan membuatnya. Jadi mode ini aman untuk file baru, tapi berbahaya untuk file yang isinya masih dibutuhkan.

Mode a: Menambahkan

Mode "a" membuka file untuk ditambahkan. Isi lama tetap ada, dan tulisan baru diletakkan di akhir:

# hasil.txt berisi "Isi baru\n"

file = open("hasil.txt", "a")
file.write("Tambahan pertama\n")
file.close()

file = open("hasil.txt", "a")
file.write("Tambahan kedua\n")
file.close()

Sekarang isinya:

Isi baru
Tambahan pertama
Tambahan kedua

Mode "a" juga membuat file baru kalau belum ada. Ia cocok untuk log atau catatan yang terus bertambah.

writelines()

writelines() menulis sekumpulan string sekaligus. Ia menerima list atau iterable:

baris = ["Apel\n", "Jeruk\n", "Mangga\n"]

file = open("buah.txt", "w")
file.writelines(baris)
file.close()

Isi buah.txt:

Apel
Jeruk
Mangga

Namanya memang writelines, tapi ia tidak menambahkan \n di antara item. Setiap string harus sudah menyertakan baris barunya sendiri.

Kalau data kamu belum punya \n, tambahkan dulu:

baris = ["Apel", "Jeruk", "Mangga"]
baris_baru = [b + "\n" for b in baris]

file = open("buah.txt", "w")
file.writelines(baris_baru)
file.close()

write() hanya menerima string. Kalau kamu ingin menulis angka, konversi dulu:

nilai = [85, 92, 78]

file = open("nilai.txt", "w")
for n in nilai:
    file.write(f"{n}\n")
file.close()

Isi nilai.txt:

85
92
78

Untuk data terstruktur, kita akan bahas format CSV dan JSON di artikel berikutnya.

Memilih Mode yang Tepat

Ringkasan singkat kapan memakai mode yang mana:

  • "w" untuk membuat file baru atau mengganti isi lama sepenuhnya.
  • "a" untuk menambah data tanpa menghapus yang sudah ada.
  • "x" untuk membuat file baru dan error kalau file sudah ada, berguna agar tidak menimpa tanpa sengaja.

Contoh mode "x":

try:
    file = open("hasil.txt", "x")
    file.write("Data baru\n")
    file.close()
except FileExistsError:
    print("File sudah ada, isinya tidak ditimpa")

Mode ini memaksa program berhenti kalau file sudah ada, sehingga data lama tetap aman.

Contoh Program: Menyimpan Daftar Tugas

Mari simpan daftar tugas ke file, lalu tambahkan tugas baru tanpa menghapus yang lama:

# simpan_tugas.py

tugas = ["Belajar Python", "Olahraga", "Baca buku"]

# Simpan daftar awal
file = open("tugas.txt", "w", encoding="utf-8")
for t in tugas:
    file.write(t + "\n")
file.close()

# Tambah satu tugas baru
file = open("tugas.txt", "a", encoding="utf-8")
file.write("Cuci piring\n")
file.close()

# Baca kembali untuk memastikan
file = open("tugas.txt", "r", encoding="utf-8")
print(file.read())
file.close()

Output:

Belajar Python
Olahraga
Baca buku
Cuci piring

Program ini memakai mode "w" untuk menyiapkan daftar, lalu "a" untuk menambah. Pola seperti ini umum dipakai di aplikasi pencatat sederhana.

Kesalahan Umum Pemula

  • Memakai mode "w" untuk menambah data — isi lama terhapus; pakai "a".
  • Lupa \n — semua tulisan menempel di satu baris.
  • Menulis angka langsung — write() menolak non-string; konversi dulu.
  • Mengira writelines() menambah baris baru — ia tidak; sertakan \n sendiri.
  • Lupa menutup file — data bisa tidak tersimpan; nantinya with mengatasinya.

Ringkasan

  • write() menulis satu string, writelines() menulis sekumpulan string
  • write() tidak menambahkan baris baru, tulis \n sendiri
  • Mode "w" menimpa isi lama, mode "a" menambahkan di akhir
  • Mode "x" membuat file baru dan error kalau sudah ada
  • write() hanya menerima string, konversi angka terlebih dahulu
  • Selalu tutup file setelah selesai menulis

Langkah Selanjutnya

Kamu sudah bisa membuka, membaca, dan menulis file. Tapi sejauh ini setiap file harus ditutup manual. Lupa menutupnya bisa membuat data tidak tersimpan.

Artikel selanjutnya membahas with Statement di Python, cara membuka file yang menutup dirinya sendiri secara otomatis.