File: Membaca & Menulis
Menyimpan dan membaca data dari file teks dengan open() dan with.
Mengapa file?
Variable hilang saat program berhenti. File menyimpan data secara permanen: catatan, konfigurasi, hasil perhitungan, log.
> Di KelasIT, file yang kamu buat berada di penyimpanan sementara dalam browser dan dihapus setiap kali program dijalankan ulang. Cukup untuk berlatih; di komputermu sendiri filenya tersimpan sungguhan.
open() dan mode
f = open("catatan.txt", "w", encoding="utf-8")
f.write("baris 1\n")
f.close()
| Mode | Arti |
|---|---|
"r" | Baca (bawaan); error jika file tidak ada |
"w" | Tulis; menimpa isi lama / membuat baru |
"a" | Tambah di akhir (append) |
"x" | Buat baru; error jika sudah ada |
"rb" / "wb" | Mode biner (gambar, PDF) |
with: cara yang benar
Lupa close() bisa membuat data tidak tersimpan. Blok with menutup file otomatis, bahkan jika terjadi error:
with open("catatan.txt", "w", encoding="utf-8") as f:
f.write("baris 1\n")
f.write("baris 2\n")
Membaca file
with open("catatan.txt", encoding="utf-8") as f:
semua = f.read() # satu string utuh
with open("catatan.txt", encoding="utf-8") as f:
baris = f.readlines() # list; tiap elemen berakhir "\n"
with open("catatan.txt", encoding="utf-8") as f:
for b in f: # paling hemat memori
print(b.strip())
strip() membuang karakter baris baru di ujung.
Menulis banyak baris
daftar = ["apel", "jeruk", "mangga"]
with open("buah.txt", "w", encoding="utf-8") as f:
f.write("\n".join(daftar))
# atau
for b in daftar:
print(b, file=f)
Menangani file yang tidak ada
try:
with open("tidak_ada.txt") as f:
data = f.read()
except FileNotFoundError:
data = ""
pathlib: cara modern
from pathlib import Path
p = Path("data.txt")
p.write_text("halo", encoding="utf-8")
print(p.read_text(encoding="utf-8"))
print(p.exists())
Praktik baik
- Selalu tentukan
encoding="utf-8"agar teks non-Latin aman. - Gunakan
with, bukanclose()manual. - Jangan membaca file raksasa sekaligus dengan
read(); telusuri per baris. - Jangan percaya path dari pengguna tanpa validasi (keamanan).