Learn
← Previous Next →

Hari 21: File I/O — Baca & Tulis File

60 min Last updated 26 Mar 2026

Membuka & Menutup File

# Cara lama (harus tutup manual)
f = open("data.txt", "r")
isi = f.read()
f.close()

# Cara modern — with statement (DIREKOMENDASIKAN)
# File otomatis ditutup walau ada error
with open("data.txt", "r") as f:
    isi = f.read()

Mode Pembukaan File

ModeKeterangan
rRead — default, error jika tidak ada
wWrite — buat baru / timpa jika ada
aAppend — tambah di akhir
xExclusive create — error jika sudah ada
r+Read + Write
bBinary mode (rb, wb, dll)

Membaca File

with open("siswa.txt", "r", encoding="utf-8") as f:
    # Baca semua sekaligus
    semua = f.read()

    # Baca per baris (list)
    f.seek(0)
    baris_list = f.readlines()

    # Iterasi baris per baris (hemat memori)
    f.seek(0)
    for baris in f:
        print(baris.strip())

Menulis File

# Tulis teks
with open("output.txt", "w", encoding="utf-8") as f:
    f.write("Baris pertama\n")
    f.write("Baris kedua\n")

# Tulis list sekaligus
baris = ["Ana: 90\n", "Budi: 85\n", "Citra: 92\n"]
with open("nilai.txt", "w") as f:
    f.writelines(baris)

# Append — tambah di akhir
with open("log.txt", "a") as f:
    f.write("2026-01-01 Login berhasil\n")

File JSON

import json

# Tulis JSON
data = {
    "nama": "Budi",
    "nilai": [85, 90, 78],
    "aktif": True
}
with open("data.json", "w") as f:
    json.dump(data, f, indent=2)

# Baca JSON
with open("data.json", "r") as f:
    data_baca = json.load(f)
print(data_baca["nama"])  # Budi

# String ↔ JSON
json_str  = json.dumps(data)            # dict → string
data_dict = json.loads(json_str)        # string → dict

File CSV

import csv

# Tulis CSV
mahasiswa = [
    ["Nama",  "NIM",   "IPK"],
    ["Budi",  "A001",  "3.75"],
    ["Ani",   "A002",  "3.50"],
]
with open("mhs.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerows(mahasiswa)

# Baca CSV
with open("mhs.csv", "r") as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(f"{row['Nama']}: IPK {row['IPK']}")

Assignment

Buat program yang: (1) menyimpan daftar kontak (nama, telepon, email) ke file JSON, (2) membacanya kembali, (3) menambahkan kontak baru, dan (4) mencari kontak berdasarkan nama.

Expected output:

Kontak Budi Santoso ditambahkan.
Kontak Ani Wijaya ditambahkan.
Kontak Budi Kurniawan ditambahkan.
Cari 'Budi':
Budi Santoso — 081234567890 — budi@email.com
Budi Kurniawan — 082111222333 — budik@email.com
PY main.py
Solution
Output