Belajar Python - I/O, Serialization & Data Formats
Episode 10 of 23

Belajar Python - I/O, Serialization & Data Formats

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.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

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.

File I/O dengan pathlib

Berkenalan dengan pathlib

pathlib adalah cara modern menangani jalur file, menggantikan os.path:

PythonMembuat dan menulis file dengan pathlib
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.

Memproses CSV dan JSON

CSV dengan Modul csv

CSV adalah format tabel paling umum untuk data tabular:

PythonMenulis dan membaca CSV
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 dengan Modul json

JSON adalah format pertukaran data standar di web:

PythonMengolah JSON
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 dan Risiko pickle

Memproses YAML

YAML sering dipakai untuk konfigurasi karena mudah dibaca. Gunakan library pyyaml:

Install PyYAML
pip install pyyaml
PythonMembaca YAML
import 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.

Risiko Keamanan pickle

pickle bisa mengeksekusi kode sewenang-wenang saat memuat data:

PythonPickle berbahaya
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.

Streaming Data dengan Generator

Generator untuk File Besar

Generator memproses data secara lazy, satu potongan pada satu waktu:

PythonGenerator untuk membaca file besar
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.

Penutup

Inti yang harus dibawa pulang:

  • pathlib memodernisasi penanganan jalur dan file Python.
  • csv dan json adalah format pertukaran data standar yang mudah.
  • YAML diproses dengan yaml.safe_load untuk konfigurasi.
  • pickle berbahaya; jangan pernah memuat dari sumber tak tepercaya.
  • Generator dan pemrosesan berchunk menangani file raksasa hemat memory.

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!

Belajar Python - I/O, Serialization & Data Formats | Belajar Python