Bab 9: Mengolah File Eksternal: Membaca dan Menulis Berkas Teks
Pelajari cara berinteraksi dengan sistem file komputer di Python untuk membaca, menulis, dan mengamankan data secara permanen.
Merangkum seluruh ilmu dari bab 1 hingga 9 untuk membangun aplikasi manajemen tugas harian berbasis terminal yang utuh, interaktif, dan fungsional.
Kuasai dasar-dasar pemrograman Python dari nol hingga mampu membangun aplikasi mandiri. Seri tutorial praktis ini dirancang khusus untuk pemula dengan pendekatan langkah demi langkah dan studi kasus nyata.
Halo semuanya! Selamat datang kembali di portal ikhsanhamid.my.id. Tidak terasa, kita akhirnya sudah sampai di penghujung perjalanan kita dalam Seri Belajar Pemrograman Python dari Nol untuk Pemula. Di bab sebelumnya (Bab 9), kita telah belajar bagaimana cara mengolah file eksternal—mulai dari membaca hingga menulis berkas teks agar data kita tidak hilang begitu program ditutup. Nah, ilmu tentang variabel, perulangan, fungsi, struktur data, hingga file handling tersebut kini akan kita gabungkan menjadi satu karya nyata: Aplikasi To-Do List Konsol yang Interaktif!
Sebelum mulai mengetik kode, mari kita rancang dulu seperti apa alur kerja dari aplikasi manajemen tugas harian (To-Do List) kita. Aplikasi ini akan memiliki beberapa fitur utama:
todo.txt) agar aman dan tetap ada saat program dibuka kembali.Kita akan memanfaatkan List of Dictionaries. Setiap tugas akan direpresentasikan sebagai sebuah Dictionary yang memiliki kunci teks (isi tugas) dan selesai (status boolean True atau False).
Sekarang, mari kita buat file Python baru dengan nama todo_app.py. Ketik atau salin kode lengkap di bawah ini ke dalam editor kode kesayanganmu:
import os
FILENAME = "todo.txt"
def muat_tugas():
tugas = []
if os.path.exists(FILENAME):
with open(FILENAME, "r", encoding="utf-8") as f:
for baris in f:
baris = baris.strip()
if baris:
# Format dalam file: [Status]|Teks Tugas
status_str, teks = baris.split("|", 1)
selesai = True if status_str == "1" else False
tugas.append({"teks": teks, "selesai": selesai})
return tugas
def simpan_tugas(tugas):
with open(FILENAME, "w", encoding="utf-8") as f:
for item in tugas:
status_str = "1" if item["selesai"] else "0"
f.write(f"{status_str}|{item['teks']}\n")
def tampilkan_tugas(tugas):
if not tugas:
print("\nBelum ada tugas di dalam daftar.")
return
print("\n--- DAFTAR TUGAS ANDA ---")
for i, item in enumerate(tugas, 1):
status = "[X]" if item["selesai"] else "[ ]"
print(f"{i}. {status} {item['teks']}")
def tambah_tugas(tugas):
teks = input("Masukkan nama tugas baru: ").strip()
if teks:
tugas.append({"teks": teks, "selesai": False})
simpan_tugas(tugas)
print(f"Tugas '{teks}' berhasil ditambahkan!")
else:
print("Nama tugas tidak boleh kosong!")
def tandai_selesai(tugas):
tampilkan_tugas(tugas)
if not tugas:
return
try:
pilihan = int(input("Pilih nomor tugas yang sudah selesai: "))
if 1 <= pilihan <= len(tugas):
tugas[pilihan - 1]["selesai"] = True
simpan_tugas(tugas)
print("Tugas ditandai sebagai selesai!")
else:
print("Nomor tugas tidak valid.")
except ValueError:
print("Masukkan angka yang valid!")
def hapus_tugas(tugas):
tampilkan_tugas(tugas)
if not tugas:
return
try:
pilihan = int(input("Pilih nomor tugas yang akan dihapus: "))
if 1 <= pilihan <= len(tugas):
tugas_dihapus = tugas.pop(pilihan - 1)
simpan_tugas(tugas)
print(f"Tugas '{tugas_dihapus['teks']}' berhasil dihapus!")
else:
print("Nomor tugas tidak valid.")
except ValueError:
print("Masukkan angka yang valid!")
def main():
tugas = muat_tugas()
while True:
print("\n=== APLIKASI TO-DO LIST ===")
print("1. Lihat Daftar Tugas")
print("2. Tambah Tugas Baru")
print("3. Tandai Tugas Selesai")
print("4. Hapus Tugas")
print("5. Keluar")
pilihan = input("Pilih menu (1-5): ").strip()
if pilihan == "1":
tampilkan_tugas(tugas)
elif pilihan == "2":
tambah_tugas(tugas)
elif pilihan == "3":
tandai_selesai(tugas)
elif pilihan == "4":
hapus_tugas(tugas)
elif pilihan == "5":
print("Terima kasih telah menggunakan aplikasi To-Do List. Sampai jumpa!")
break
else:
print("Pilihan tidak valid, silakan coba lagi.")
if __name__ == "__main__":
main()
Mari kita bedah beberapa komponen penting dari kode di atas agar kamu benar-benar paham cara kerjanya:
muat_tugas() & simpan_tugas(): Mengimplementasikan materi Bab 9. Program otomatis mengecek keberadaan file todo.txt. Jika ada, data dibaca dan diparsing kembali ke bentuk list dictionary. Setiap kali ada perubahan (tambah, selesai, hapus), fungsi simpan_tugas() langsung memperbarui file eksternal tersebut.while True di Fungsi main(): Membuat program terus berjalan interaktif menampilkan menu utama sampai pengguna memilih opsi nomor 5 untuk keluar.try-except): Mencegah program crash atau tertutup paksa apabila pengguna tidak sengaja mengetik huruf alih-alih angka saat memilih menu nomor tugas.Tips Penting: Selalu gunakan parameter encoding="utf-8" saat membuka file teks di Python agar karakter khusus atau emoji tidak mengalami corrupt atau error saat dibaca oleh sistem operasi yang berbeda.Selamat! Kamu baru saja merangkum seluruh konsep fundamental pemrograman Python: sintaks dasar, percabangan (if-elif-else), perulangan (while dan for), fungsi modular, struktur data (list & dictionary), hingga penanganan file teks eksternal menjadi satu aplikasi mandiri yang utuh dan berguna.
Perjalanan belajarmu tidak berhenti sampai di sini. Untuk melangkah ke jenjang Intermediate, kamu bisa mencoba mengembangkan aplikasi ini lebih jauh dengan:
sqlite3.Tkinter atau membuat versi web menggunakan framework ringan seperti Flask.Terima kasih banyak telah mengikuti seluruh rangkaian Seri Belajar Pemrograman Python dari Nol untuk Pemula di ikhsanhamid.my.id. Tetap semangat, teruslah berlatih menulis kode setiap hari, dan sampai jumpa di artikel tutorial tingkat lanjut berikutnya!
Pelajari cara berinteraksi dengan sistem file komputer di Python untuk membaca, menulis, dan mengamankan data secara permanen.
Pelajari cara menyelamatkan program Python dari error dan crash mendadak menggunakan blok try, except, else, dan finally dengan mudah.
Pelajari cara merancang blok kode modular menggunakan fungsi (def), parameter, argumen, return, dan memahami lingkup variabel local vs global di Python.
Tinggalkan Tanggapan atau Pertanyaan
Email Anda privat (tidak dipublikasikan)Belum ada tanggapan untuk artikel ini.
Jadilah yang pertama memulai diskusi teknis & berbagi wawasan!