Episode ini membahas input dan output data: file I/O dengan pathlib, pemrosesan CSV, JSON, dan YAML, risiko keamanan pickle, serta streaming data dengan generator dan pemrosesan berchunk agar hemat memory.

Aplikasi nyata berurusan dengan data: membaca file, mengirim JSON lewat API, dan menyimpan hasil proses. Episode 10 membekali kalian dengan keterampilan I/O dan serialization yang menjadi tulang punggung hampir semua sistem.
Kita akan membahas file I/O modern dengan pathlib, format data CSV, JSON, dan YAML, risiko keamanan pickle, serta streaming data dengan generator agar bisa memproses file raksasa tanpa menghabiskan memory.
pathlib adalah cara modern menangani jalur file, menggantikan os.path:
from pathlib import Path
folder = Path("data")
folder.mkdir(exist_ok=True)
file_baru = folder / "catatan.txt"
file_baru.write_text("Belajar Python itu menyenangkan\n")
print(file_baru)
print(file_baru.exists())Path("data") membuat objek jalur, dan operator / menggabungkan jalur secara lintas platform. write_text menulis file dan exists() memeriksa keberadaannya. pathlib membuat kode I/O lebih bersih dan lebih mudah dibaca.
CSV adalah format tabel paling umum untuk data tabular:
import csv
with open("produk.csv", "w", newline="") as f:
penulis = csv.writer(f)
penulis.writerow(["nama", "harga"])
penulis.writerow(["laptop", 15000000])
with open("produk.csv", "r") as f:
pembaca = csv.DictReader(f)
for baris in pembaca:
print(baris["nama"], baris["harga"])csv.DictReader(f) membaca CSV dan memetakan setiap baris ke dict berdasarkan header. csv.writer menulis data. CSV sederhana dan portabel, cocok untuk pertukaran data antar sistem.
JSON adalah format pertukaran data standar di web:
import json
data = {"nama": "Arman", "skill": ["Python", "Docker"]}
teks = json.dumps(data)
print(teks)
balik = json.loads(teks)
print(balik["nama"])
print(balik["skill"][0])json.dumps(data) mengubah dict menjadi string JSON, dan json.loads(teks) mengubahnya kembali. Untuk file, gunakan json.dump dan json.load. JSON menjadi bahasa bersama antara Python dan layanan web lain.
YAML sering dipakai untuk konfigurasi karena mudah dibaca. Gunakan library pyyaml:
pip install pyyamlimport yaml
konfigurasi = yaml.safe_load("""
server:
host: localhost
port: 8000
""")
print(konfigurasi["server"]["port"])yaml.safe_load menguraikan YAML menjadi objek Python. Selalu gunakan safe_load — bukan load — karena versi tidak aman bisa mengeksekusi kode berbahaya. Ini bagian dari best practice keamanan yang kita perdalam di episode 14.
pickle bisa mengeksekusi kode sewenang-wenang saat memuat data:
import pickle
data = {"nama": "Arman"}
blob = pickle.dumps(data)
print(pickle.loads(blob))pickle.dumps(data) dan pickle.loads(blob) memang bekerja, tapi memuat pickle dari sumber tak tepercaya sangat berbahaya — bisa mengeksekusi kode berbahaya. Aturan emasnya: jangan pernah memuat pickle dari sumber tidak tepercaya. Untuk data lintas sistem, gunakan JSON.
Generator memproses data secara lazy, satu potongan pada satu waktu:
def baca_berchunk(jalur, ukuran=1024):
with open(jalur, "rb") as f:
while True:
chunk = f.read(ukuran)
if not chunk:
break
yield chunk
for potongan in baca_berchunk("data/catatan.txt"):
print(len(potongan))yield chunk membuat fungsi menjadi generator yang menghasilkan potongan data satu per satu. File raksasa tidak pernah dimuat utuh ke memory — hanya potongan yang sedang diproses. Ini pola kunci untuk pipeline data besar.
Inti yang harus dibawa pulang:
Di episode 11 selanjutnya kita akan membahas configuration, secrets, dan environment management — Twelve-Factor config via env vars, python-dotenv, dynaconf dan pydantic settings, serta best practice mengelola secret agar tidak pernah ter-commit ke Git. Project kalian siap dikonfigurasi dengan aman!